export default {
    "枫影二刃": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [20 * attack_number, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let back = false;
            if (src_unit["允许返回"]) {
                back = true;
            }
            src_unit["枫魂增伤"] = undefined;
            if (src_unit["法术状态"]["怒哮"] === undefined) {
                let gl = 40;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "九黎城", "枫魂")) {
                    gl = 100;
                }
                if (G.RandomUtils.chance(gl)) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "怒哮");
                }
            } else if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "九黎城", "枫魂")) {
                src_unit["枫魂增伤"] = 1.2;
            }
            return { "返回": back, "重复次数": 1, "起始伤害": 0.7, "叠加伤害": 0, "重复提示": false, "连击次数": 2 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            if (src_unit["枫魂增伤"]) {
                damage = damage * src_unit["枫魂增伤"];
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "九黎城", "怒刃") && !fight_data["PK战斗"]) {
                if (src_unit["铸斧"]) {
                    damage = damage * 1.5;
                } else {
                    damage = damage * 1.25;
                }
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        }
    },
    "三荒尽灭": {
        "技能类型": "九黎",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 3;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [20, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": true, "重复次数": 1, "起始伤害": 0.32, "叠加伤害": 0, "重复提示": true, "连击次数": 1 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "九黎城", "俾睨")) {
                damage = damage * 1.15;
            }
            let fkgl = 45;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "九黎城", "乘风")) {
                fkgl = fkgl + 10;
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": fkgl };
        },
        "物理连击触发": function (fight_data, src_unit, target_unit, target_list, attack_number) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["全屏11"] = "三荒尽灭";
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["寄存目标"] = target_list.map(e => e["编号"]);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["攻击目标"] = []
        }
    },
    "力辟苍穹": {
        "技能类型": "九黎",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [20 * attack_number, "魔法"];
        }
    },
    "铁血生风": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [20 * attack_number, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let lj_number = 1;
            let dj_damage = 0;
            if (target_list[0]["九黎浮空"]) {
                lj_number = 1 + G.RandomUtils.generate_random(1, 2);
                dj_damage = 0.1;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "九黎城", "生风") && G.RandomUtils.chance(8)) {
                    //物攻技能计算
                    G.FightADSkillUtils.computing_ad_skill(fight_data, src_unit, "铁血生风", skill_level);
                }
            }
            return { "返回": false, "重复次数": 1, "起始伤害": 0.8, "叠加伤害": dj_damage, "重复提示": false, "连击次数": lj_number };
        }
    },
    "一斧开天": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [20 * attack_number, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let back = false;
            if (src_unit["允许返回"]) {
                back = true;
            }
            return { "返回": back, "重复次数": 1, "起始伤害": 0.7, "叠加伤害": 0, "重复提示": false, "连击次数": 2 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "九黎城", "得势")) {
                damage = damage * 1.15;
            }
            let fkgl = 45;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "九黎城", "乘风")) {
                fkgl = fkgl + 55;
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": fkgl };
        }
    },
    "魔神之刃": {
        "技能类型": "九黎",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [20 * attack_number, "魔法"];
        }
    },
    "炎魂": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [20 * attack_number, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["炎魂"] = {};
            target_unit["法术状态"]["回合"] = 1;
            let jc = Math.floor(target_unit["防御"] * G.RandomUtils.generate_double(0.05, 0.1));
            let damage = jc;
            let fy = -jc;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, '九黎城', "魂力")) {
                damage = Math.floor(damage * 1.6);
            }
            target_unit["法术状态"]["伤害"] = damage;
            target_unit["法术状态"]["防御"] = fy;
        }
    },
    "怒哮": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["怒哮"] = {};
            target_unit["法术状态"]["怒哮"]["回合"] = 2;
        }
    },
    "龙卷雨击": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let target_count = Math.floor(skill_level / 25 + 1)
            if (target_count > 7) {
                target_count = 7;
            } else if (target_count < 2) {
                target_count = 2;
            }

            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["龙魄"] && G.RandomUtils.chance(20)) {
                target_count += 3;
            } else if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["龙钩"] && src_unit["法术状态"]["龙骇"] && src_unit["法术状态"]["龙骇"]["触发"] === "龙卷雨击") {
                target_count += 3;
            }
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["沐雨"] && _SystemHourData["天气"] === 2) {
                target_count += 3;
            } else if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["龙钩"] && src_unit["法术状态"]["龙骇"] && src_unit["法术状态"]["龙骇"]["触发"] === "龙卷雨击") {
                target_count += 3;
            }
            return target_count;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["法术状态"]["龙战于野"]) {
                return [20 * attack_number + 350, "魔法"];
            } else {
                return [20 * attack_number, "魔法"];
            };
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "龙骇")) {
                if (src_unit["法术状态"]["龙骇"]) {
                    if (src_unit["法术状态"]["龙骇"]["触发"] === "龙卷雨击") {
                        let ratio = 0.1;
                        if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "雨魄")) {
                            ratio = 0.15;
                        }
                        if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "回灵") && src_unit["法术状态"]["龙魂"]) {
                            ratio += 0.16;
                        }
                        if (src_unit["法术状态"]["潜龙在渊"]) {
                            ratio += 0.02 * src_unit["法术状态"]["潜龙在渊"]["层数"];
                        }
                        damage_ratio += ratio;
                        G.FightStatusUtils.canel_unit_status(fight_data, "龙骇", src_unit)
                    }
                } else {
                    let gl = 25;
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "傲岸")) {
                        gl = 75;
                    }
                    if (src_unit["法术状态"]["龙魂"]) {
                        gl = 100;
                    }
                    if (G.RandomUtils.chance(gl)) {
                        // 切换龙骇触发技能
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "龙骇", 69, "龙腾");
                    }
                }
                if (src_unit["骇浪"]) {
                    damage_ratio = damage_ratio * 1.05;
                    src_unit["骇浪"] = undefined
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "斩浪")) {
                    if (target_list.length === 7) {
                        if (fight_data["PK战斗"]) {
                            src_unit["斩浪"] = 7;
                        } else {
                            src_unit["斩浪"] = 21;
                        }
                    }
                }
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            if (!src_unit["招式特效"]["龙卷雨击"]) {
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            }
            let damage = skill_level * 2.2 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("龙宫", target_list.length, skill_level);
            if (fight_data["PK战斗"]) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "云霄")) {
                    G.FightUnitUtils.remove_unit_mp(target_unit, 50);
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "唤雨")) {
                    fl_ratio = fl_ratio * (1 + (1 - target_unit["魔法"] / target_unit["最大魔法"]) * 0.08);
                }
            }
            return [Math.floor(damage * fl_ratio * 0.95)];
        },
        "追加固定法伤": function (fight_data, src_unit, target_unit, damage) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(target_unit, "龙宫", "狂浪") && G.RandomUtils.chance(50)) {
                damage += 80;
            }
        },
        "减伤触发": function (fight_data, src_unit, target_unit, damage) {
            damage += G.FightUnitUtils.get_unit_skill_level(src_unit, "破浪诀") * 0.8;
            return damage;
        }
    },
    "二龙戏珠": {
        "技能类型": "法术",
        "冷却回合": function (fight_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "龙宫", "戏珠")) {
                return 8;
            }
        },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 2
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [70, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 2.5 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit) + 29 + 50
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("龙宫", target_list.length, skill_level)
            if (fight_data["PK战斗"]) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "云霄")) {
                    G.FightUnitUtils.remove_unit_mp(target_unit, 50)
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "唤雨")) {
                    fl_ratio += (1 + target_unit["魔法"] / target_unit["最大魔法"] * 0.08);
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "云变")) {
                let fyjn = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.FightUnitUtils.get_error_ap_status(target_unit), 1);
                G.FightUnitUtils.remove_unit_mp(target_unit, 90 * fyjn.length);
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "戏珠": {
        "技能类型": "统计",
        "法攻后触发": function (fight_data, src_unit, target_unit_list, skill_name, skill_level) {
            // 触发戏珠
            if (src_unit["特殊状态"]["戏珠触发"] === undefined) {
                src_unit["特殊状态"]["戏珠"] = undefined
                src_unit["特殊状态"]["戏珠触发"] = 1
                G.FightAPSkillUtils.computing_ap_skill_damage(fight_data, src_unit, target_unit_list[0], "龙卷雨击", skill_level, 1);
            }
        }
    },
    "龙腾": {
        "技能类型": "法术",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["法术状态"]["龙战于野"]) {
                return [380, "魔法"];
            } else {
                return [30, "魔法"];
            };
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "龙骇")) {
                if (src_unit["法术状态"]["龙骇"]) {
                    if (src_unit["法术状态"]["龙骇"]["触发"] === "龙腾") {
                        let ratio = 0.2;
                        if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "雨魄")) {
                            ratio = 0.3;
                        }
                        if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "回灵") && src_unit["法术状态"]["龙魂"]) {
                            ratio += 0.16;
                        }
                        if (src_unit["法术状态"]["潜龙在渊"]) {
                            ratio += 0.02 * src_unit["法术状态"]["潜龙在渊"]["层数"];
                        }
                        damage_ratio = damage_ratio + ratio;
                        G.FightStatusUtils.canel_unit_status(fight_data, "龙骇", src_unit)
                    }
                } else {
                    let gl = 25
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "傲岸")) {
                        gl = 75
                    }
                    if (src_unit["法术状态"]["龙魂"]) {
                        gl = 100
                    }
                    if (G.RandomUtils.chance(gl)) {
                        // 切换龙骇触发技能
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "龙骇", 69, "龙卷雨击")
                    }
                }
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 2.5 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit) + 29 + 50;
            let fl_ratio = 1;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "波涛") && target_unit["类型"] === "角色") {
                fl_ratio = fl_ratio * 1.1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "龙啸") && G.RandomUtils.chance(20)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "龙啸", 69);
            }
            if (target_unit["类型"] === "角色" && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "清吟") && target_unit["魔法"] < target_unit["最大魔法"] * 0.3) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "清吟", 69);
            }
            if (fight_data["PK战斗"]) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "云霄")) {
                    G.FightUnitUtils.remove_unit_mp(target_unit, 50);
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "唤雨")) {
                    fl_ratio += (1 + target_unit["魔法"] / target_unit["最大魔法"] * 0.08);
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "沐雨") && target_unit["魔法"] <= 0) {
                    let status = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.gain_status_ap, 1)
                    if (status.length > 0) {
                        G.FightStatusUtils.canel_unit_status(fight_data, G.RandomUtils.random_get_array(status), target_unit);
                    }
                }
            }
            return [Math.floor(damage * fl_ratio)];
        },
        "法术减伤": function (fight_data, src_unit, target_unit, remove_damage_ratio) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "惊鸿")) {
                remove_damage_ratio -= 0.1;
            }
        },
        "扣血触发": function (fight_data, src_unit, target_unit, remove_hp) {
            //龙腾造成的伤害≥(目标气血上限x8%)时，减少目标300点魔法值。
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "摧意") && remove_hp >= target_unit["气血上限"] * 0.08) {
                G.FightUnitUtils.remove_unit_mp(fight_data, target_unit, 300);
            }
        }
    },
    "亢龙归海": {
        // 使用龙腾连续攻击2次目标，每次造成龙腾伤害的95%，使用后休息1回合。
        "不可行动": true,
        "技能类型": "法术",
        "冷却回合": function (fight_unit) { return 6 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["法术状态"]["龙战于野"]) {
                return [275, "魔法"];
            } else {
                return [100, "魔法"];
            }
        },
        "双封": true,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 2 }
        },
        "法术连击": function (fight_data, src_unit, target_unit, skill_level) {
            if (G.FightUnitUtils.get_target_unit_status(fight_data, target_unit, 1)) {
                G.FightAPSkillUtils.computing_ap_skill_damage(fight_data, src_unit, target_unit, "亢龙归海", skill_level, 1);
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 2.5 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit) + 29 + 50;
            let fl_ratio = 0.95;
            if (fight_data["PK战斗"]) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "云霄")) {
                    G.FightUnitUtils.remove_unit_mp(target_unit, 50);
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "唤雨")) {
                    fl_ratio += (1 + target_unit["魔法"] / target_unit["最大魔法"] * 0.08);
                }
            }
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "亢龙归海", skill_level);
            return [Math.floor(damage * fl_ratio)];
        },
        "随机法术": function (src_unit, target_list) {
            if (src_unit["法术状态"]["亢龙归海"]) {
                return "亢龙归海2";
            } else {
                return "亢龙归海";
            }
        }
    },
    "亢龙归海2": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["法术状态"]["龙战于野"]) {
                return [275, "魔法"];
            } else {
                return [100, "魔法"];
            }
        },
        "双封": true,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 2 }
        },
        "法术连击": function (fight_data, src_unit, target_unit, skill_level) {
            if (G.FightUnitUtils.get_target_unit_status(fight_data, target_unit, 1)) {
                G.FightAPSkillUtils.computing_ap_skill_damage(fight_data, src_unit, target_unit, "亢龙归海", skill_level, 1);
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 2.5 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit) + 29 + 50;
            let fl_ratio = 0.95;
            if (fight_data["PK战斗"]) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "云霄")) {
                    G.FightUnitUtils.remove_unit_mp(src_unit, 50);
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "唤雨")) {
                    fl_ratio += (1 + src_unit["魔法"] / src_unit["最大魔法"] * 0.08);
                }
            }
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "亢龙归海", skill_level);
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "龙吟": {
        "技能类型": "固伤",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let damage = skill_level + 100;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            if (fight_data["PK战斗"]) {
                let mf = Math.floor(damage * 0.75);
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "云霄")) {
                    mf = mf + 50;
                }
                G.FightUnitUtils.remove_unit_mp(target_unit, mf);
            }
            return Math.floor(damage);
        }
    },
    "解封": {
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [60, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.sects_fengyin_ap["女儿村"]);
        }
    },
    "清心": {
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.relieve_status(fight_data, target_unit, ["尸腐毒", "毒", "雾杀"]);
        }
    },
    "神龙摆尾": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 6;
            if (skill_level >= 175) {
                hh = 8;
            } else if (skill_level >= 150) {
                hh = 8;
            }
            return { "回合": hh };
        }
    },
    "龙战于野": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "金鸦火羽（高级）"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 12, "法防": Math.floor(target_unit["法防"] * 0.1) };
        },
        "追加固定法伤": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * 1.16;
        }
    },
    "逆鳞": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 12;
            if (skill_level >= 160) {
                hh = 12;
            } else if (skill_level >= 120) {
                hh = 12;
            } else if (skill_level >= 80) {
                hh = 12;
            } else if (skill_level >= 40) {
                hh = 12;
            }
            return { "回合": hh, "伤害": Math.floor(skill_level * 1.5) };
        }
    },
    "裂魂": {
        // 追魂刺有几率使目标的一部分魂魄脱离自己的身体。
        // 目标为非玩家单位时,造成额外伤害;
        // 目标为玩家单位时,击出目标魂魄。
        // 追魂刺和夺命咒对目标造成伤害时,若其魂魄在场、则会造成额外伤害。（魂魄属于本方增益状态)"
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["裂魂"] = {};
            target_unit["法术状态"]["裂魂"]["回合"] = 4;
            target_unit["法术状态"]["裂魂"]["伤害"] = Math.floor(status_level * 1.5);
            target_unit["法术状态"]["裂魂"]["触发"] = custom_data;
        }
    },
    "乘风破浪": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 4;
            if (skill_level >= 160) {
                hh = 8;
            } else if (skill_level >= 120) {
                hh = 8;
            } else if (skill_level >= 80) {
                hh = 8;
            } else if (skill_level >= 40) {
                hh = 8;
            }
            return { "回合": hh, "躲避": Math.floor(skill_level * 1.5) };
        }
    },
    "潜龙在渊": {
        // 移除自身“龙魂”和“龙骇”状态，每个被移除状态使你获得1层以下对应增益，持续到战斗结束:龙魂:造成的法术伤害提高1%。龙骇:对应被增益的龙腾或龙卷雨击伤害提高2%。(不可驱散)
        "技能类型": "增益",
        "不可驱散": true,
        "冷却回合": function (fight_unit) { return 8 },
        "指定对象": "自己",
        "层数上限": 999,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "层数": custom_data };
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let status_list = ["龙魂", "龙骇"];
            let count = 0;
            for (let j = 0; j < status_list.length; j++) {
                let status_name = status_list[j];
                if (target_unit["法术状态"] && target_unit["法术状态"][status_name] && target_unit["法术状态"][status_name]["攻击编号"] === src_unit["编号"]) {
                    count++;
                    G.FightStatusUtils.canel_unit_status(fight_data, status_name, src_unit);
                }
            }
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "潜龙在渊", 69, count);
            return false;
        }
    },
    "破浪": {
        // 每回合开始时，有33%几率使本回合所有造成的法术伤害提高6%、受到的法术伤害降低9%.
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 1 } //无
        },
        "攻击法伤结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * 1.06;
        },
        "被攻击法伤结果": function (fight_data, src_unit, target_unit, damage) {
            if (!src_unit["法术状态"]["破浪"]) {
                damage = damage * (1 - 0.09);
            }
        }
    },
    "盘龙": {
        // 每次触发“龙魂”后，“龙魂”的效果增加2%，持续到战斗结束。
        "不可驱散": true,
        "层数上限": 999,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "层数": 1 } //无
        }
    },
    "龙啸": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 3 } //无
        },
        "被攻击法伤结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * 1.15;
        }
    },
    "清吟": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 3 } //无
        },
        "被攻击法伤结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * 1.15;
        },

    },
    "龙魂": {
        // 每成功使用3次法术，都可以临时增加自身法术伤害（效果可持续2回合，成功使用法术后状态消失）
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 3 } //无
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["特殊状态"]["龙魂"] = 0;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            src_unit["法术状态"]["龙魂"] = {};
            src_unit["法术状态"]["龙魂"]["回合"] = 2;
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_unit_list, damage_ratio) {
            let ratio = 0.45;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "叱咤")) {
                ratio = 0.09;
            }
            if (src_unit["法术状态"]["潜龙在渊"]) {
                ratio += 0.01 * src_unit["法术状态"]["潜龙在渊"]["层数"];
            }
            if (src_unit["法术状态"]["盘龙"]) {
                ratio += 0.02 * src_unit["法术状态"]["盘龙"]["层数"];
            }
            damage_ratio += ratio;
        },
        "法攻后触发": function (fight_data, src_unit, target_unit_list, skill_name, skill_level) {
            src_unit["特殊状态"]["龙魂"] += 1;
            if (src_unit["特殊状态"]["龙魂"] >= 3) {
                src_unit["特殊状态"]["龙魂"] = 0;
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "龙魂", 1);
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "龙宫", "盘龙")) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "盘龙", 1);
                }
            }
        }
    },
    "龙骇": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            src_unit["法术状态"]["龙骇"] = {};
            src_unit["法术状态"]["龙骇"]["回合"] = 999;
            src_unit["法术状态"]["龙骇"]["触发"] = custom_data;
        }
    },
    "雷浪穿云": {
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 5 };
        }
    },
    "水遁": {
        "技能类型": "逃跑技能",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [fight_unit["魔法"], "魔法"];
        }
    },
    "变身": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["法术状态"]["魔息术"]) {
                return [1, "魔法"];
            }
            return [20, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            let hh = 12;
            target_unit["法术状态"]["变身"] = {};
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "狮驼岭", "宁息")) {
                hh += 2;
                target_unit["法术状态"]["变身"]["宁息"] = true;
            } else if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "狮驼岭", "屏息")) {
                target_unit["法术状态"]["变身"]["屏息"] = true;
            }
            let damage = Math.floor(status_level * 0.5);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "狮驼岭", "狂躁")) {
                hh -= 3;
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "狂怒", 69, hh);
            }
            target_unit["法术状态"]["变身"]["伤害"] = damage;
            target_unit["法术状态"]["变身"]["回合"] = hh;
        }
    },
    "狂怒": {
        // 发动神功,以狂怒之势震慑诸敌,对其造成高额伤害。获得与当前变身相同回合的“狂怒”:造成的物理伤害提高。
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["法术状态"]["魔息术"]) {
                return [1, "魔法"];
            }
            return [30, "魔法"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"] && src_unit["法术状态"]["变身"]) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "狮驼岭", "狂化")) {
                    src_unit["法术状态"]["变身"]["回合"] += 1;
                }
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "狂怒", 69, src_unit["法术状态"]["变身"]["回合"]);
                return false;
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["狂怒"] = {};
            let hh = 4;
            if (custom_data) {
                hh = custom_data;
            } else if (status_level >= 160) {
                hh = 8;
            } else if (status_level >= 120) {
                hh = 7;
            } else if (status_level >= 80) {
                hh = 6;
            } else if (status_level >= 40) {
                hh = 5;
            }
            target_unit["法术状态"]["狂怒"]["回合"] = hh;
            let damage = Math.floor(status_level * 2);
            target_unit["法术状态"]["狂怒"]["伤害"] = damage;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "狮驼岭", "攫取")) {
                target_unit["法术状态"]["狂怒"]["攫取"] = 1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "狮驼岭", "屏息")) {
                target_unit["法术状态"]["狂怒"]["屏息"] = true;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "狮驼岭", "狂乱")) {
                target_unit["法术状态"]["狂怒"]["狂乱"] = 1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "狮驼岭", "雄风")) {
                target_unit["法术状态"]["狂怒"]["雄风"] = 1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "狮驼岭", "不羁")) {
                target_unit["法术状态"]["狂怒"]["不羁"] = 1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "狮驼岭", "狮噬")) {
                target_unit["法术状态"]["狂怒"]["狮噬"] = 1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "狮驼岭", "象踏")) {
                target_unit["法术状态"]["狂怒"]["象踏"] = 1;
            }
        },
        "攻击物理暴击伤害": function (fight_data, src_unit, target_unit, damage) {
            damage += target_unit["法术状态"]["狂怒"]["伤害"];
        }
    },
    "天魔解体": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["气血"] > fight_unit["最大气血"] * 0.1) {
                if (fight_unit["法术状态"]["魔息术"]) {
                    return [1, "魔法"];
                }
                return [100, "魔法"];
            }
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"]) {
                let hp = Math.floor(src_unit["气血"] * 0.1);
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾死亡"] = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, src_unit, hp, "天魔解体");
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾气血"] = hp;
            }
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 8, "伤害": skill_level };
        }
    },
    "鹰击": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let sl = 3;
            if (skill_level >= 125) {
                sl = 6;
            } else if (skill_level >= 75) {
                sl = 5;
            } else if (skill_level >= 50) {
                sl = 4;
            }
            if (G.RandomUtils.chance(40) && src_unit["法术状态"]["狂怒"]) {
                sl = sl + 1
            }
            if (src_unit["法术状态"]["背水"]) {
                sl = sl + 1
            }
            return sl;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["法术状态"]["魔息术"]) {
                return [attack_number, "魔法"];
            }
            return [30 * attack_number, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["鹰击"] = {};
            target_unit["法术状态"]["鹰击"]["回合"] = 2;
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "狮驼岭", "鹰啸") && target_unit["认证码"]) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "鹰啸", 11);
            }
            if (src_unit["死地"]) {
                src_unit["死地"] = 2;
                damage += 200;
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "鹰击", skill_level)
            if (src_unit["法术状态"]["肝胆"] && src_unit["法术状态"]["肝胆"]["触发"]) {
                G.FightStatusUtils.canel_unit_status(fight_data, "肝胆", src_unit);
            }
        }
    },
    "疯狂鹰击": {
        "技能类型": "物理",
        "冷却回合": function (fight_unit) { return 6 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) { //若自身气血≥98%(化圣1)/94%(化圣5)/90%(化圣9)则额外作用两个目标
            let sl = 6
            if (src_unit["气血"] >= src_unit["最大气血"] * 0.9) {
                sl = 8
            }
            if (src_unit["法术状态"]["背水"]) {
                sl = sl + 1
            }
            return sl;
        },
        "消耗": function (fight_data, fight_unit, attack_number) { //技能消耗：400(化圣1)/200(化圣5)/50(化圣9)点魔法,1个金鸦火羽
            if (fight_unit["法术状态"]["魔息术"] && fight_unit["法术状态"]["魔息术"]["魔息"]) {
                return [1, "金鸦火羽（高级）"];
            }
            return [100, "金鸦火羽（高级）"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": true, "重复次数": 1, "起始伤害": 1.15, "叠加伤害": 0, "重复提示": true, "连击次数": 1 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "鹰击", skill_level)
            if (src_unit["法术状态"]["肝胆"] && src_unit["法术状态"]["肝胆"]["触发"]) {
                G.FightStatusUtils.canel_unit_status(fight_data, "肝胆", src_unit);
            }
        }
    },
    "狮搏": {
        "技能类型": "物理",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["法术状态"]["魔息术"] && fight_unit["法术状态"]["魔息术"]["魔息"]) {
                return [1, "魔法"];
            }
            return [30, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 1.4;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "狮驼岭", "威压") && target_list[0]["认证码"]) {
                start_damage = start_damage * 1.2;
            }
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            if (G.FightUnitUtils.get_target_unit_status(src_unit, target_list[0], 2) === false) {
                if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "狮吼")) {
                    G.FightADSkillUtils.computing_ad_skill(fight_data, src_unit, "狮搏", skill_level);
                }
            } else {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "狮驼岭", "威压")
                    && G.RandomUtils.chance(30) && target_list[0]["认证码"]) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_list[0], "威慑", 11, 2);
                }
            }
            if (src_unit["法术状态"]["狂怒"] && src_unit["法术状态"]["狂怒"]["狮噬"] && G.RandomUtils.chance(32)) {
                G.FightADSkillUtils.computing_ad_skill(fight_data, src_unit, "狮搏", skill_level);
            }
        }
    },
    "困兽之斗": {
        "技能类型": "物理",
        "冷却回合": function (fight_unit) { return 8 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["气血"] > fight_unit["最大气血"] * 0.1) {
                if (fight_unit["法术状态"]["魔息术"] && fight_unit["法术状态"]["魔息术"]["魔息"]) {
                    return [1, "魔法和气血"];
                }
                return [100, "魔法和气血"];
            };
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 1;
            let lj_number = 1;
            let cfts = false;
            let back = false;
            if (src_unit["法术状态"]["狂怒"] && G.RandomUtils.chance(50)) {
                target_list[1] = target_list[0];
                lj_number = target_list.length;
                cfts = true;
                back = true;
            }
            return { "返回": back, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": cfts, "连击次数": lj_number };
        },
        "物理连击触发": function (fight_data, src_unit, target_unit, target_list, attack_number) {
            if (attack_number === 1) {
                let hp = Math.floor(src_unit["气血"] * 0.1);
                G.FightUnitUtils.consummer_unit_hp(src_unit, hp);
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["前摇掉血"] = hp;
            }
        },
        "击杀触发": function (fight_data, src_unit, target_unit) {
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "狂怒", 11, 5);
        }
    },
    "象形": {
        // 攻击敌万单个目标，并使其无法行动，持续2回合。使用后取消“变身”状态且下回合无法使用法术。
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["法术状态"]["魔息术"] && fight_unit["法术状态"]["魔息术"]["魔息"]) {
                return [1, "魔法"];
            }
            return [50, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["象形"] = {};
            target_unit["法术状态"]["象形"]["回合"] = 2;
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_list[0], "象形", skill_level);
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "象形（休息）", skill_level);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "狮驼岭", "怒象")
                && (src_unit["气血"] < src_unit["气血上限"] * 0.3) && G.RandomUtils.chance(70)) {
                if (src_unit["法术状态"]["变身"]) {
                    src_unit["法术状态"]["变身"]["回合"] += 2;
                }
            } else {
                if (src_unit["法术状态"]["狂怒"] === undefined || src_unit["法术状态"]["狂怒"]["象踏"] === undefined) {
                    G.FightStatusUtils.canel_unit_status(fight_data, "变身", src_unit);
                }
            }
        }
    },
    "象形（休息）": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["象形（休息）"] = {};
            target_unit["法术状态"]["象形（休息）"]["回合"] = 2;
        }
    },
    "爪印": {
        "不可驱散": true,
        "层数上限": 5,
        "刷新回合": 5,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 5, "层数": 1 };
        },
        "死亡触发": function (fight_data, src_unit, target_unit) {
            G.FightStatusUtils.canel_unit_status(fight_data, "爪印", target_unit)
        }
    },
    "狂战": {
        // 每有一个己方召唤兽被击飞\n，增加30点伤害力，可叠加\n4层，死亡后消失。",[2]="每有一个己方召唤兽被击飞\n，增加60点伤害力，可叠加\n4层，死亡后消失。
        "不可驱散": true,
        "层数上限": 4,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "层数": 1 };
        },
        "死亡触发": function (fight_data, src_unit, target_unit) {
            G.FightStatusUtils.canel_unit_status(fight_data, "狂战", target_unit)
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            damage += 30 * src_unit["法术状态"]["狂战"]["层数"] * src_unit["神器"]["等级"];
        }
    },
    "鹰啸": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 2, "伤害": Math.floor(target_unit["伤害"] * 0.32), "法伤": Math.floor(target_unit["法伤"] * 0.32) };
        }
    },
    "狂袭": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["狂袭"] = {};
            target_unit["法术状态"]["狂袭"]["回合"] = 1;
            target_unit["法术状态"]["狂袭"]["死亡"] = false;
            target_unit["法术状态"]["狂袭"]["伤害力"] = status_level;
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            damage += src_unit["法术状态"]["狂袭"]["伤害力"];
        }
    },
    "背水": {
        "刷新回合": 2,
        "不可驱散": true,
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["背水"] = {};
            target_unit["法术状态"]["背水"]["回合"] = 1;
        }
    },
    "肝胆": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["肝胆"] = {};
            target_unit["法术状态"]["肝胆"]["回合"] = 999;
            target_unit["法术状态"]["肝胆"]["触发"] = false;
        }
    },
    "长啸": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["长啸"] = {};
            target_unit["法术状态"]["长啸"]["回合"] = 1;
        }
    },
    "威慑": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["法术状态"]["魔息术"] && fight_unit["法术状态"]["魔息术"]["魔息"]) {
                return [1, "魔法"];
            }
            return [20, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 1;
            if (skill_level >= 125) {
                hh = 6;
            } else if (skill_level >= 100) {
                hh = 5;
            } else if (skill_level >= 75) {
                hh = 4;
            } else if (skill_level >= 45) {
                hh = 3;
            } else if (skill_level >= 25) {
                hh = 2;
            }
            if (custom_data) {
                hh = custom_data
            }
            return { "回合": hh };
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["类型"] === "角色") {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "威慑", skill_level);
            }
        }
    },
    "定心术": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["法术状态"]["魔息术"] && fight_unit["法术状态"]["魔息术"]["魔息"]) {
                return [1, "魔法"];
            }
            return [40, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 12;
            if (skill_level >= 160) {
                hh = 12;
            } else if (skill_level >= 120) {
                hh = 12;
            } else if (skill_level >= 80) {
                hh = 12;
            } else if (skill_level >= 60) {
                hh = 12;
            }
            return { "回合": hh, "法伤": Math.floor(skill_level * 1.5), "法防": Math.floor(skill_level * 1.5) };
        }
    },
    "魔息术": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "气血"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["魔息术"] = {};
            target_unit["法术状态"]["魔息术"]["回合"] = 6;
            target_unit["法术状态"]["魔息术"]["恢复魔法"] = Math.floor(status_level * 1.3);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "狮驼岭", "魔息")) {
                target_unit["法术状态"]["魔息术"]["魔息"] = 1;
            }
        },
        "行动前触发": function (fight_data, fight_unit) {
            // 行动前魔息术回蓝
            G.FightUnitUtils.add_unit_mp(fight_unit, Math.floor(fight_unit["法术状态"]["魔息术"]["恢复魔法"]));
        }
    },
    "玄灵珠·破军": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },
    "玄灵珠·回春": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["玄灵珠·回春"] = {};
            target_unit["法术状态"]["玄灵珠·回春"]["回合"] = 2;
        }
    },
    "玄灵珠·空灵": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },
    "玄灵珠·噬魂": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },
    "连环击": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 175) {
                return 7;
            } else if (skill_level >= 125) {
                return 6;
            } else if (skill_level >= 75) {
                return 5;
            } else if (skill_level >= 50) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["法术状态"]["魔息术"] && fight_unit["法术状态"]["魔息术"]["魔息"]) {
                return [attack_number, "魔法"];
            }
            return [30 * attack_number, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["连环击"] = {};
            target_unit["法术状态"]["连环击"]["回合"] = 2;
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let lj_number = Math.floor(skill_level / 35) + 2;
            let start_damage = 1;
            if (src_unit["法术状态"]["肝胆"]) {
                start_damage = start_damage * 1.15
                src_unit["法术状态"]["肝胆"]["触发"] = true;
            }
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": -0.1, "重复提示": false, "连击次数": lj_number };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "狮驼岭", "乱击")) {
                damage = damage * 1.1;
                damage += G.FightUnitUtils.get_unit_skill_level(src_unit, "狂兽诀");
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "连环击", skill_level);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "狮驼岭", "乱击")) {
                src_unit["法术状态"]["变身数据"]["回合"] -= 2;
            } else if (src_unit["法术状态"]["狂怒"] && src_unit["法术状态"]["狂怒"]["雄风"]) {
            } else {
                G.FightStatusUtils.canel_unit_status(fight_data, "变身", src_unit);
            }
            if (src_unit["法术状态"]["肝胆"]) {
                G.FightStatusUtils.canel_unit_status(fight_data, "肝胆", src_unit);
            }
        }
    },
    //                    大唐官府                    //
    "杀气诀": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "魔法"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"] && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "风刃")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "风魂", 11);
            }
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 12;
            if (skill_level >= 160) {
                hh = 12;
            } else if (skill_level >= 120) {
                hh = 12;
            } else if (skill_level >= 80) {
                hh = 12;
            } else if (skill_level >= 40) {
                hh = 12;
            }
            return { "回合": hh, "伤害": Math.floor(skill_level * 1.3), "命中": Math.floor(skill_level * 2) };
        }
    },
    "惊锋": {
        "层数上限": 12,
        "不可驱散": true,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "层数": 1 };
        },
        "死亡触发": function (fight_data, src_unit, target_unit) {
            G.FightStatusUtils.canel_unit_status(fight_data, "惊锋", target_unit)
        }
    },
    "翩鸿一击": {
        "技能类型": "物理",
        "冷却回合": function (fight_unit) { return 6 },
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 2, "速度": Math.floor(target_unit["速度"] * 0.15) };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 1;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "翩鸿")) {
                start_damage = 1.35;
            }
            return { "返回": false, "重复次数": 1, "起始伤害": 1, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "翩鸿一击", skill_level);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "翩鸿")) {
                let fyjn = G.FightStatusUtils.relieve_status(fight_data, target_list[0], G.Skill.relieve_gain_status_ap);
                if (fyjn.length > 0) {
                    G.FightStatusUtils.canel_unit_status(fight_data, G.RandomUtils.random_get_array(fyjn), target_list[0]);
                }
            }
        }
    },
    "长驱直入": {
        "技能类型": "物理",
        "冷却回合": function (fight_unit) { return 6 },
        "佛法加成": true,
        "不可保护": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 1.1, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            if (G.RandomUtils.chance(60)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_list[0], "重创", skill_level);
            }
        }
    },
    "重创": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["重创"] = {};
            target_unit["法术状态"]["重创"]["回合"] = 2;
        }
    },
    "烈火焚原": {
        "技能类型": "法术",
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["烈火焚原"] = {};
            target_unit["法术状态"]["烈火焚原"]["回合"] = 3;
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit)
            let fl_ratio = 1 - target_list.length * 0.1
            if (fl_ratio <= 0.4) {
                fl_ratio = 0.4
            }
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "烈火焚原", src_unit["等级"]);
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "冰封千里": {
        "技能类型": "法术",
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1 - target_list.length * 0.1;
            if (fl_ratio <= 0.4) {
                fl_ratio = 0.4;
            }
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "毒", src_unit["等级"]);
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "毁灭之光": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["毁灭之光"] = {};
            target_unit["法术状态"]["毁灭之光"]["回合"] = 1;
        }
    },
    "秘传封印": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["秘传封印"] = {};
            target_unit["法术状态"]["秘传封印"]["回合"] = 2;
        }
    },
    "攻伐": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["攻伐"] = {};
            target_unit["法术状态"]["攻伐"]["回合"] = 3;
        }
    },
    "后发制人": {
        "无特效": true,
        // 使用当回合提高自身的防御和法防，下回合临时提高命中、伤害和速度并对敌方单个目标发动物理攻击。
        "技能类型": "增益",
        "不加特效": true,
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "大唐官府", "勇武")) {
                return [0, "无"];
            }
            if (fight_unit["气血"] >= fight_unit["最大气血"] * 0.05) {
                return [0, "无"];
            }
            return [10, "魔法"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            return true;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["后发制人"] = {};
            target_unit["法术状态"]["后发制人"]["回合"] = 2;
            target_unit["法术状态"]["后发制人"]["防御"] = Math.floor(status_level * 3.5);
            target_unit["法术状态"]["后发制人"]["法防"] = Math.floor(status_level * 2);
            target_unit["法术状态"]["后发制人"]["伤害"] = Math.floor(status_level * 3.5);
            target_unit["法术状态"]["后发制人"]["速度"] = 9999;
            src_unit["法术状态"]["后发制人"]["目标"] = src_unit["指令"]["目标"];
        },
        "物攻前触发": function (fight_data, src_unit, skill_name) {
            if (src_unit["气血"] <= 0) {
                G.FightStatusUtils.canel_unit_status(fight_data, "后发制人", src_unit);
                fight_data["战斗流程"].push({ "流程": 610, "攻击方": src_unit["编号"], "状态": "后发制人", "被攻击": [{ "编号": src_unit["法术状态"]["后发制人"]["目标"] }] });
            } else {
                let target_number = src_unit["法术状态"]["后发制人"]["目标"];
                let target = G.FightUtils.get_fight_unit_by_number(fight_data, target_number);
                if (G.FightUnitUtils.get_target_unit_status(src_unit, target, 1)) {
                    src_unit["指令"]["目标"] = target_number;
                } else {
                    target = G.FightUtils.get_enemy_team_single_survive_unit(fight_data, target);
                    src_unit["指令"]["目标"] = target["编号"];
                }
            }
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "目空")) {
                damage += target_unit["防御"] * 0.1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "勇武")) {
                damage += target_unit["防御"] * 0.4;
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            G.FightStatusUtils.canel_unit_status(fight_data, "后发制人", src_unit);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "勇武")) {
                let hp = Math.floor(src_unit["气血上限"] * 0.15);
                G.FightComputingUtils.add_target_hp_and_play(fight_data, src_unit, Math.min(hp, src_unit["等级"] * 8));
                G.FightUnitUtils.add_fen_nu(src_unit, 10);
            } else {
                let close_hp = Math.floor(src_unit["气血"] * 0.05)
                if (src_unit["气血"] <= 50) {
                    close_hp = 1;
                }
                let die = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, src_unit, close_hp, "后发制人");
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾气血"] = die;
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾气血"] = close_hp;
            }
        },
        "行动前触发": function (fight_data, fight_unit) {
            G.FightADSkillUtils.computing_ad_skill(fight_data, fight_unit, "后发制人", G.FightUnitUtils.get_unit_skill_level(fight_unit, "后发制人"));
            fight_unit["指令"]["类型"] = "";
        }
    },
    "摧枯拉朽": {
        "技能类型": "物理",
        "冷却回合": function (fight_unit) { return 30 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [300, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 1.1, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            src_unit["指令"]["类型"] = "法术"
            src_unit["指令"]["参数"] = src_unit["披坚执锐"][src_unit["披坚执锐"]["可用编号"]]["名称"];
            //法术计算
            G.FightAPSkillUtils.computing_ap_skill(fight_data, src_unit, target_list[0], src_unit["指令"]["参数"]);
        }
    },
    "披挂上阵": {
        "技能类型": "物理",
        "冷却回合": function (fight_unit) { return 10 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 3;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["气血"] >= fight_unit["最大气血"] * 0.5) {
                return [0, "无"];
            }
            if (fight_unit["法术状态"]["干将莫邪"] != null && fight_unit["奇经八脉"] && fight_unit["奇经八脉"]["神凝"]) {
                // TODO 暂时不知道干什么
                return true;
            };
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 0.95, "叠加伤害": 0.1, "重复提示": false, "连击次数": 3 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            damage = damage * 0.8;
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            let close_hp = Math.floor(src_unit["最大气血"] * 0.05);
            let die = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, src_unit, close_hp, "披挂上阵");
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾气血"] = die;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾气血"] = close_hp;
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "横扫千军", skill_level);
            G.SkillData.default["披坚执锐"]["被动触发"](fight_data, src_unit, target_list[0], true);
        }
    },
    "横扫千军": {
        "技能类型": "物理",
        "不可行动": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 3;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["气血"] >= fight_unit["最大气血"] * 0.5) {
                return [0, "无"];
            }
            if (fight_unit["法术状态"]["干将莫邪"] != null && fight_unit["奇经八脉"] && fight_unit["奇经八脉"]["神凝"]) {
                // TODO 暂时不知道干什么
                return true;
            }
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 2, "防御": Math.floor(target_unit["防御"] * 0.1), "法防": Math.floor(target_unit["法防"] * 0.05) };
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            // 勇念: 使用横扫千军时，忽略目标10%防御，天气为雨时横扫千军额外造成15%的伤害。
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "勇念")) {
                defense = defense * 0.9;
                if (_SystemHourData["天气"] === 2) {
                    damage = damage * 1.15;
                }
            }
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 0.9;
            let lj_number = 3;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "无敌")) {
                start_damage = 0.75;
                lj_number = 4;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "突刺") && src_unit["气血"] >= src_unit["最大气血"] * 0.9) {
                start_damage = start_damage + 0.05;
            }
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0.1, "重复提示": false, "连击次数": lj_number };
        },
        "溅射计算": function (fight_data, src_unit, target_unit, damage) {
            if (!fight_data["PK战斗"] && src_unit["溅射"] && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "扶阵")) {
                //溅射目标
                let js_list = G.FightUtils.get_jian_she_group(fight_data, src_unit, target_unit, 3);
                for (let index = 0; index < js_list.length; index++) {
                    G.FightComputingUtils.remove_hp_js_and_play(fight_data, src_unit, js_list[index], damage * src_unit["溅射"]);
                }
            } else {
                if (src_unit["法术状态"]["剑意"] && src_unit["法术状态"]["剑意"]["层数"] >= 11) {
                    let target_count = 3;
                    for (let index = 0; index < 3; index++) {
                        //溅射目标
                        let js_list = G.FightUtils.get_jian_she_group(fight_data, src_unit, target_unit, target_count + 1);
                        for (let j = 0; j < 2; j++) {
                            G.FightComputingUtils.remove_hp_js_and_play(fight_data, src_unit, js_list[index], damage * 0.45);
                        }
                    }
                }
            }
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "横扫千军", skill_level);
            if (!G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "神凝") || src_unit["法术状态"]["干将莫邪"]) {
                let close_hp = Math.floor(src_unit["最大气血"] * 0.05);
                let die = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, src_unit, close_hp, "横扫千军");
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾死亡"] = die;
                if (G.FightUnitUtils.check_unit_shen_qi_skill(src_unit, "藏锋敛锐")
                    && G.RandomUtils.chance(50 * src_unit["神器"]["等级"] + 50)) {
                    //添加护盾
                    G.FightUnitUtils.add_hu_dun_for_lt_hp(fight_data, src_unit, close_hp);
                }
            }
            if (src_unit["类型"] === "角色") {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "破军")) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "剑意", 11);
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "风刃") && G.RandomUtils.chance(50)) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "风魂", 11);
                }
                if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "连破")) {
                    let go = false;
                    let lp = 1;
                    if (src_unit["勇进"]) {
                        src_unit["勇进"] = undefined;
                        go = true;
                    }
                    if (G.FightUtils.check_fight_unit_sects_is_single(fight_data, src_unit, "大唐官府")) {
                        if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "孤勇") && target_list[0]["认证码"] && target_list[0]["气血"] <= 0) {
                            lp = lp + 25;
                        } else if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "熟练")) {
                            lp = lp + 17;
                        }
                    }
                    if (src_unit["亢强"]) {
                        src_unit["亢强"] = 0
                        if (G.RandomUtils.chance(lp + src_unit["亢强"])) {
                            go = true;
                        }
                    }
                    if (src_unit["新增连破"] && src_unit["新增连破"] < 2) {
                        src_unit["新增连破"] += 1;
                        go = true;
                    }
                    if (go) {
                        fight_data["战斗流程"].push({ "流程": 800, "攻击方": src_unit["编号"], "被攻击": src_unit["编号"] })
                        G.FightStatusUtils.canel_unit_status(fight_data, "横扫千军", src_unit);
                    }
                }
            }
        },
        "保护增伤": function (fight_data, src_unit, target_unit, damage) {
            if (src_unit["法术状态"]["剑意"] && src_unit["法术状态"]["剑意"]["层数"] >= 2) {
                damage = Math.floor(damage * 1.05);
            }
        }
    },
    "破釜沉舟": {
        "不可行动": true,
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 3;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_data["PK战斗"]) {
                if (fight_unit["气血"] >= fight_unit["最大气血"] * 0.1 && fight_unit["气血"] < fight_unit["最大气血"] * 0.5) {
                    return [0, "无"];
                }
            } else {
                if (fight_unit["气血"] >= fight_unit["最大气血"] * 0.1) {
                    return [0, "无"];
                }
            }
            if (fight_unit["法术状态"]["干将莫邪"] != null && fight_unit["奇经八脉"] && fight_unit["奇经八脉"]["神凝"]) {
                return [0, "无"];
            }
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 2, "防御": Math.floor(target_unit["防御"] * 0.1), "法防": Math.floor(target_unit["法防"] * 0.05) };
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": true, "重复次数": 1, "起始伤害": 1, "叠加伤害": 0, "重复提示": true, "连击次数": 1 };
        },
        "物理连击触发": function (fight_data, src_unit, target_unit, target_list, attack_number) {
            if (attack_number === 1) {
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["全屏22"] = "蛛丝缠绕";
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["寄存目标"] = target_list.map(e => e["编号"]);
            }
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "破釜沉舟", skill_level);
            if (!G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "神凝") || src_unit["法术状态"]["干将莫邪"]) {
                let close_hp = Math.floor(src_unit["最大气血"] * 0.05);
                let die = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, src_unit, close_hp, "破釜沉舟");
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾死亡"] = die;
                if (G.FightUnitUtils.check_unit_shen_qi_skill(src_unit, "藏锋敛锐")
                    && G.RandomUtils.chance(50 * src_unit["神器"]["等级"] + 50)) {
                    //添加护盾
                    G.FightUnitUtils.add_hu_dun_for_lt_hp(fight_data, src_unit, close_hp);
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "风刃") && G.RandomUtils.chance(50)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "风魂", 11);
            }
        }
    },
    "反间之计": {
        // 使敌方NPC目标陷入混乱状态，随意攻击其友方目标（不能对玩家及召唤兽使用），持续3回合。成功率受技能等级与目标等级之差影响
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 3;
            if (skill_level >= 160) {
                hh = 3;
            } else if (skill_level >= 120) {
                hh = 3;
            } else if (skill_level >= 80) {
                hh = 2;
            } else if (skill_level >= 40) {
                hh = 2;
            }
            return { "回合": hh };
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (fight_data["PK战斗"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "反间之计", skill_level);
            }
        },
        "行动前触发": function (fight_data, fight_unit) {
            // 普通攻击队友
            fight_unit["指令"]["类型"] = "攻击";
            fight_unit["指令"]["攻击队友"] = true;
            let target = G.FightUtils.get_friend_team_single_survive_unit(fight_data, fight_unit);
            if (target !== undefined) {
                fight_unit["指令"]["目标"] = target["编号"];
            } else {
                fight_unit["指令"]["类型"] = "防御";
            }
        }
    },
    "风魂": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },
    "剑意": {
        "层数上限": 150,
        "不可驱散": true,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "层数": 1 };
        }
    },
    "傲视": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["傲视"] = {};
            target_unit["法术状态"]["傲视"]["回合"] = 6;
        }
    },
    "安神诀": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 7
            if (skill_level >= 150) {
                hh = 7;
            }
            return { "回合": 8, "法防": Math.floor(skill_level * 1.8), "法伤": Math.floor(skill_level * 1.8) };
        }
    },
    "其疾如风": {
        // 使用后下回合大幅提高所有友方玩家目标的速度。
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 4 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 5
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "金鸦火羽（高级）"];
        },
        "回合开始前": function (fight_data, fight_unit) {
            // 速度加成
            if (fight_unit["法术状态"]["其疾如风"]) {
                fight_unit["临时速度"] += 50;
            }
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["全屏"] = true;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["其疾如风"] = {};
            target_unit["法术状态"]["其疾如风"]["回合"] = 2;
        },
        "取队友": function (fight_data, fight_unit, max_number, team_data) {
            let member_list = [];
            if (G.FightUnitUtils.get_target_unit_status(fight_unit, fight_unit, 1) && fight_unit["类型"] === "角色" && fight_unit["法术状态"]["其疾如风"] === undefined) {
                member_list.push(fight_unit);
            }
            for (let index = 0; index < team_data.length; index++) {
                let element = team_data[index]
                if (element["编号"] !== fight_unit["编号"]
                    && G.FightUnitUtils.get_target_unit_status(fight_unit, element, 1)
                    && element["法术状态"]["其疾如风"] === undefined
                    && element["类型"] === "角色") {
                    member_list.push(element);
                }
            }
            return G.FightUtils.hp_order(member_list, max_number);
        }
    },
    "其徐如林": {
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 4 },
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "金鸦火羽（高级）"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["全屏"] = true;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["其徐如林"] = {};
            target_unit["法术状态"]["其徐如林"]["回合"] = 2;
        },
        "取队友": function (fight_data, fight_unit, max_number, team_data) {
            // 取可以操作的目标，不进行法术状态筛选
            return G.FightUtils.get_friend_team_group_survive_unit(fight_data, fight_unit, max_number);
        }
    },
    "侵掠如火": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 5
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "金鸦火羽（高级）"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["全屏"] = true;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["侵掠如火"] = {};
            target_unit["法术状态"]["侵掠如火"]["回合"] = 2;
        },
        "取队友": function (fight_data, fight_unit, max_number, team_data) {
            let member_list = [];
            if (G.FightUnitUtils.get_target_unit_status(fight_unit, fight_unit, 1) && fight_unit["类型"] === "角色" && fight_unit["法术状态"]["侵掠如火"] === undefined) {
                member_list.push(fight_unit);
            }
            for (let index = 0; index < team_data.length; index++) {
                let element = team_data[index]
                if (element["编号"] !== fight_unit["编号"]
                    && G.FightUnitUtils.get_target_unit_status(fight_unit, element, 1)
                    && element["法术状态"]["侵掠如火"] === undefined
                    && element["类型"] === "角色") {
                    member_list.push(element);
                }
            }
            return G.FightUtils.hp_order(member_list, max_number);
        },
        "攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            if (src_unit["法术状态"]["侵掠如火"]["回合"] === 1) {
                damage = damage * 1.3;
            }
        }
    },
    "岿然如山": {
        // 用后下回合大幅降低所有友方玩家目标受到的伤害
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 4 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 5
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "金鸦火羽（高级）"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["全屏"] = true;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["岿然如山"] = {};
            target_unit["法术状态"]["岿然如山"]["回合"] = 2;
        },
        "取队友": function (fight_data, fight_unit, max_number, team_data) {
            let member_list = [];
            if (G.FightUnitUtils.get_target_unit_status(fight_unit, fight_unit, 1) && fight_unit["类型"] === "角色" && fight_unit["法术状态"]["岿然如山"] === undefined) {
                member_list.push(fight_unit);
            }
            for (let index = 0; index < team_data.length; index++) {
                let element = team_data[index]
                if (element["编号"] !== fight_unit["编号"]
                    && G.FightUnitUtils.get_target_unit_status(fight_unit, element, 1)
                    && element["法术状态"]["岿然如山"] === undefined
                    && element["类型"] === "角色") {
                    member_list.push(element);
                }
            }
            return G.FightUtils.hp_order(member_list, max_number);
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            if (target_unit["法术状态"]["岿然如山"]["回合"] === 1) {
                damage = damage * 0.7;
            }
        }
    },
    "惊天动地": {
        //  "瞬间对5个单位造成伤害。"
        // "使用后仅保留1点气血和气血上限，休息2回合。"
        // "本方≥2名玩家单位倒地、自身当前气血≥90%"
        "不可行动": true,
        "技能类型": "特殊",
        "冷却回合": function (fight_unit) { return 4 },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["惊天动地"] = {};
            target_unit["法术状态"]["惊天动地"]["回合"] = 2;
        },
        "惊天动地一": function (fight_data, src_unit, skill_level) {
            fight_data["战斗流程"].push({ "流程": 400, "特技名称": "惊天动地", "攻击方": src_unit["编号"], "被攻击": [], "提示": { "允许": true, "技能类型": "法术", "名称": `${src_unit["名称"]}使用了惊天动地` }, "技能提示": { "内容": "【特殊】惊天动地", "编号": src_unit["编号"] } });
            let target_unit = G.FightUtils.get_fight_unit_by_number(fight_data, src_unit["指令"]["目标"]);
            if (target_unit === undefined) {
                console.debug(`惊天动地一 , 目标不存在, 结束计算`);
                return;
            }
            let target_unit_list = G.FightUtils.get_enemy_team_group_survive_unit(fight_data, src_unit, target_unit, 5);
            if (target_unit_list.length === 0) {
                console.debug(`惊天动地一 , 目标为空, 结束计算`);
                return;
            }
            let close_hp = src_unit["气血"] - 1;
            src_unit["气血上限"] = 1;
            let die = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, src_unit, close_hp, "惊天动地");
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾死亡"] = die;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾气血"] = close_hp;
            for (let index = 0; index < target_unit_list.length; index++) {
                let target = target_unit_list[index];
                G.SkillData.default["惊天动地"]["惊天动地二"](fight_data, src_unit, target);
            }
        },
        "惊天动地二": function (fight_data, src_unit, target_unit) {
            let damage = G.FightPhysicalAttack.get_ad_damage(fight_data, src_unit, target_unit, "惊天动地") * 2;
            let final_damage = G.FightPhysicalAttack.get_final_ad_damage(fight_data, src_unit, target_unit, damage, 5, 2);
            let damage_result = G.FightComputingUtils.get_damage_result(fight_data, src_unit, target_unit, final_damage["伤害"], final_damage["暴击"], "惊天动地", false, false, 1);
            let die = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, target_unit, damage_result["伤害"], "惊天动地");
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"].push({ "编号": target_unit["编号"], "特效": ["惊天动地"], "伤害": damage_result["伤害"], "技能类型": damage_result["类型"], "死亡": die });
            G.FightUtils.add_waiting_play_time(fight_data, 1, "惊天动地二");
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "惊天动地", 69);
        },
        "特殊算法": function (fight_data, src_unit, target_unit, skill_level) {
            G.SkillData.default["惊天动地"]["惊天动地一"](fight_data, src_unit);
        }
    },
    //                    化生寺                    //
    "佛法无边": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["奇经八脉"] && fight_unit["奇经八脉"]["自在"]) {
                return [0, "魔法"];
            }
            return [150, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["佛法无边"] = {};
            let hh = 6;
            if (status_level >= 150) {
                hh = 7;
            }
            target_unit["法术状态"]["佛法无边"]["法连几率"] = 30;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "慧定")) {
                hh = hh - 1;
                target_unit["法术状态"]["佛法无边"]["法连几率"] = 50;
            }
            target_unit["法术状态"]["佛法无边"]["回合"] = hh;
            if (target_unit["编号"] === src_unit["编号"] && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "佛法") && G.FightUtils.check_fight_unit_sects_is_single(fight_data, src_unit, "化生寺")) {
                target_unit["法术状态"]["佛法无边"]["佛法"] = 1.3;
            }
        },
        "增益独立算法": function (fight_data, src_unit, target_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "慧定")) {
                target_unit = src_unit;
            }
        }
    },
    "金刚护体": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["金刚护体"] = {};
            target_unit["法术状态"]["金刚护体"]["回合"] = custom_data ? custom_data : 1;
            let fy = Math.floor(status_level * 1.5)
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "流刚")) {
                fy = Math.floor(fy * 1.18);
            }
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "度厄")) {
                fy = Math.floor(fy * 0.5);
            }
            target_unit["法术状态"]["金刚护体"]["防御"] = fy;
        }
    },
    "妙悟": {
        "技能类型": "恢复",
        "冷却回合": function (fight_unit) { return 2 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 3, "速度": Math.floor(skill_level * 0.2) };
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let ratio = 1;
            if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "慈悲")) {
                ratio = 2;
            }
            let data = Math.floor(skill_level * 4 + 200) + Math.floor(src_unit["装备伤害"] / 15);
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "妙悟", skill_level);
            if (target_unit["佛眷"]) {
                data = data * 1.3;
            }
            if (src_unit["销武"]) {
                data = data * 0.5;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "止戈")) {
                data = data + (src_unit["装备伤害"] * 0.18);
            }
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "明光")) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "归气")) {
                    if (G.RandomUtils.chance(36)) {
                        data = data * 1.6;
                    }
                    else if (G.RandomUtils.chance(18)) {
                        data = data * 2;
                    }
                }
            }
            if (src_unit["聚气"] && G.RandomUtils.chance(src_unit["聚气"]["概率"])) {
                data = data * (1 + src_unit["聚气"]["效果"] / 100);
                src_unit["聚气"] = undefined;
            }
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "度厄")) {
                data = Math.floor(data * 0.5);
            }
            data = data * ratio;
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "妙悟", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        }
    },
    "唧唧歪歪": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 150) {
                return 7;
            } else if (skill_level >= 125) {
                return 6;
            } else if (skill_level >= 100) {
                return 5;
            } else if (skill_level >= 75) {
                return 4;
            } else if (skill_level >= 50) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["气血"] > 5) {
                if (fight_unit["法术状态"]["诵经"]) {
                    return [30 * attack_number + 140, "魔法"];
                }
                return [30 * attack_number, "魔法"];
            };
        },
        "算法": (fight_data, src_unit, target_list, target_index, damage) => {
            damage = damage * G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_list[0]);
            let skill_level = G.FightUnitUtils.get_unit_skill_level(src_unit, "唧唧歪歪");
            let fl = G.FightSkillUtils.get_fl_ratio("化生寺", target_list.length, skill_level);
            if (src_unit["福泽天下"]) {
                damage += src_unit["福泽天下"];
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "销武")) {
                src_unit["销武"] = 1;
                damage = damage * (0.5 + (src_unit["等级"] * 0.08 / 100));
            }
            return [Math.floor(damage)];
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "诵经")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "诵经", 69);
                damage_ratio = damage_ratio * (1 + 0.02 * src_unit["法术状态"]["诵经"]["层数"])
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "解惑")) {
                for (let index = 0; index < src_unit["主动技能"].length; index++) {
                    let skill = src_unit["主动技能"][index];
                    if (skill["名称"] === "谆谆教诲" && skill["剩余冷却回合"]) {
                        if (skill["剩余冷却回合"] >= 3) {
                            skill["剩余冷却回合"] -= 3;
                        } else {
                            skill["剩余冷却回合"] = undefined;
                        }
                        break;
                    }
                }
            }
        },
        "法攻后触发": function (fight_data, src_unit, skill_level) {
            let die = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, src_unit, 5, "唧唧歪歪");
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾死亡"] = die;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾气血"] = 5;
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "聚气")) {
                src_unit["聚气"] = { "概率": 15, "效果": 30 };
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "聚念")) {
                    src_unit["聚气"] = { "概率": 15, "效果": 75 };
                } else if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "磅礴")) {
                    src_unit["聚气"] = { "概率": 60, "效果": 30 };
                }
            }
        },
        "法术连击": function (fight_data, src_unit, target_unit, skill_level) {
            if (src_unit["法术状态"]["佛法无边"] &&
                G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "无量")
                && G.FightUtils.check_fight_unit_sects_is_single(fight_data, src_unit, "化生寺") && G.RandomUtils.chance(35)) {
                G.FightAPSkillUtils.computing_ap_skill_damage(fight_data, src_unit, target_unit, "唧唧歪歪", skill_level, 1);
            }
        },
        "追加固定法伤": function (fight_data, src_unit, target_unit, damage) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "授业")) {
                damage += 30;
            }
        }
    },
    "韦陀护法": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["无碍"]) {
                return 1;
            }
            if (skill_level >= 150) {
                return 6;
            } else if (skill_level >= 120) {
                return 5;
            } else if (skill_level >= 90) {
                return 4;
            } else if (skill_level >= 60) {
                return 4;
            } else if (skill_level >= 30) {
                return 2;
            } else {
                return 1;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 4;
            if (skill_level >= 160) {
                hh = 12;
            } else if (skill_level >= 120) {
                hh = 12;
            } else if (skill_level >= 80) {
                hh = 12;
            } else if (skill_level >= 40) {
                hh = 12;
            }
            let mz = skill_level * 2;
            let damage = Math.floor(skill_level * 0.5)
            if (fight_unit["奇经八脉"] && fight_unit["奇经八脉"]["感念"]) {
                hh = 1
                mz = Math.floor(mz * 1.5)
                damage = Math.floor(damage * 1.5)
            } else if (fight_unit["奇经八脉"] && fight_unit["奇经八脉"]["无碍"]) {
                mz = Math.floor(mz * 2)
                damage = Math.floor(damage * 2)
            }
            return { "回合": hh, "伤害": damage, "命中": mz };
        }
    },
    "金刚护法": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["映法"] && G.RandomUtils.chance(50)) {
                return 10;
            }
            if (skill_level >= 125) {
                return 5;
            } else if (skill_level >= 75) {
                return 4;
            } else if (skill_level >= 50) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["金刚护法"] = {};
            let hh = 12;
            if (status_level >= 150) {
                hh = 13;
            }
            target_unit["法术状态"]["金刚护法"]["回合"] = custom_data ? custom_data : hh;
            let damage = Math.floor(status_level * 1.3);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "佛屠")) {
                damage = Math.floor(damage + (src_unit["装备伤害"] * 0.09));
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "流刚")) {
                damage = Math.floor(damage * 1.18);
            }
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "度厄")) {
                damage = Math.floor(damage * 0.5);
            }
            target_unit["法术状态"]["金刚护法"]["伤害"] = damage;
        }
    },
    "一苇渡江": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["映法"] && G.RandomUtils.chance(50)) {
                return 10;
            }
            if (skill_level >= 150) {
                return 7;
            } else if (skill_level >= 125) {
                return 6;
            } else if (skill_level >= 100) {
                return 5;
            } else if (skill_level >= 75) {
                return 4;
            } else if (skill_level >= 50) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["一苇渡江"] = {};
            let hh = 12;
            if (status_level >= 150) {
                hh = 13;
            }
            target_unit["法术状态"]["一苇渡江"]["回合"] = hh;
            let speed = Math.floor(status_level / 3);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "流刚")) {
                speed = Math.floor(speed * 1.18);
            }
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "度厄")) {
                speed = Math.floor(speed * 0.5);
            }
            target_unit["法术状态"]["一苇渡江"]["速度"] = speed;
        }
    },

    "诸天看护": {
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 8 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [[100, 10], "魔法和愤怒"] //100点魔法,10点愤怒
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "层数": custom_data };
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let status_list = ["金刚护法", "金刚护体", "一苇渡江"];
            let count = 0
            for (let j = 0; j < status_list.length; j++) {
                let status_name = status_list[j];
                if (target_unit["法术状态"][status_name] && target_unit["法术状态"][status_name]["攻击编号"] === src_unit["编号"]) {
                    count++;
                    G.FightStatusUtils.canel_unit_status(fight_data, status_name, src_unit);
                }
            }
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "诸天看护", 1, count);
            return false;
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            damage += damage * (0.015 * (1 + src_unit["法术状态"]["诸天看护"]["层数"]))
        }
    },
    "诵经": {
        "层数上限": 5,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "层数": 1 };
        }
    },
    "功德无量": {
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 12 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [1, "金鸦火羽（高级）"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["功德无量"] = {};
            let status_names = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.feng_yin_status_ap, 1);
            if (status_names.length > 0) {
                let status_name = G.RandomUtils.random_get_array(status_names);
                G.FightStatusUtils.canel_unit_status(fight_data, status_name, target_unit);
            }
            let hh = 3;
            if (src_unit["编号"] === target_unit["编号"]) {
                hh = 6;
            }
            target_unit["法术状态"]["功德无量"]["回合"] = hh;
            let fs = Math.floor(target_unit["法伤"] * 0.12);
            target_unit["法术状态"]["功德无量"]["法伤"] = fs;
        }
    },

    "仁心": {
        "层数上限": 5,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "层数": 1 };
        }
    },

    "渡劫金身": {
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 4 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [10, "愤怒"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["渡劫金身"] = {};
            target_unit["法术状态"]["渡劫金身"]["回合"] = 2;
            target_unit["法术状态"]["渡劫金身"]["恢复气血"] = status_level * 4;
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            if (damage >= target_unit["气血"]) {
                damage = target_unit["法术状态"]["渡劫金身"]["恢复气血"];
                if (target_unit["认证码"]) {
                    target_unit["神佑复活"] = true;
                }
                G.FightStatusUtils.relieve_status(fight_data, target_unit, ["渡劫金身"]);
                return { "伤害": Math.floor(damage), "技能类型": 2, "特效": [] };
            }
        }
    },
    "醍醐灌顶": {
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [1, "金鸦火羽（高级）"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let ratio = 1;
            if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "慈悲")) {
                ratio = 2;
            }
            let data = Math.floor(skill_level * 8 + 500) + Math.floor(src_unit["装备伤害"] / 15);
            let status = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.feng_yin_status_ap, 1) //可以解小死亡
            if (status.length > 0) {
                G.FightStatusUtils.canel_unit_status(fight_data, G.RandomUtils.random_get_array(status), target_unit);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "佛显")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "佛显", 11, 3);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "天照")) {
                target_unit["特殊状态"]["天照"] = 80;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "妙悟")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "妙悟", G.FightUnitUtils.get_unit_skill_level(src_unit, "我佛慈悲"));
            }
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "度厄")) {
                data = Math.floor(data * 0.5);
            }
            data = data * ratio;
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "醍醐灌顶", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            G.FightUnitUtils.add_fen_nu(target_unit, 50);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        }
    },
    "我佛慈悲": {
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (G.FightUnitUtils.is_no_revive(target_unit) || target_unit["类型"] === "bb" || (target_unit["气血上限"] && target_unit["气血上限"] <= 0)) {
                return 0;
            } else {
                return 1;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [150, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let data = Math.floor(skill_level * 4 + 70) + Math.floor(src_unit["装备伤害"] / 15);
            if (target_unit["佛眷"]) {
                data = data * 1.3;
            }
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "明光")) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "归气")) {
                    if (G.RandomUtils.chance(36)) {
                        data = data * 1.6;
                    }
                } else {
                    if (G.RandomUtils.chance(18)) {
                        data = data * 2;
                    }
                }
            }
            if (src_unit["销武"]) {
                data = data * 0.5;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "止戈")) {
                data = data + (src_unit["装备伤害"] * 0.18);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "圣手") && target_unit["气血"] > target_unit["最大气血"] * 0.7) {
                data = data * 1.03;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "佛性")) {
                data = data * 1.2;
            }
            if (src_unit["聚气"] && G.RandomUtils.chance(src_unit["聚气"]["概率"])) {
                data = data * (1 + src_unit["聚气"]["效果"] / 100);
                src_unit["聚气"] = undefined;
            }
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "度厄")) {
                data = Math.floor(data * 0.5)
            }
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "我佛慈悲", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "慈针")) {
                G.FightUnitUtils.add_fen_nu(src_unit, 30);
            }
            target_unit["死亡"] = undefined;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["复活"] = true;
        }
    },
    "推拿": {
        "技能类型": "恢复",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let ratio = 1;
            if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "慈悲")) {
                ratio = 2;
            }
            let data = Math.floor(skill_level * 4 + 150);
            if (target_unit["佛眷"]) {
                data = data * 1.3;
            }
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "明光")) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "归气")) {
                    if (G.RandomUtils.chance(36)) {
                        data = data * 1.6;
                    }
                    else
                        if (G.RandomUtils.chance(18)) {
                            data = data * 2;
                        }
                }
            }
            if (src_unit["销武"]) {
                data = data * 0.5;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "止戈")) {
                data = data + (src_unit["装备伤害"] * 0.18);
            }

            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "圣手") && target_unit["气血"] > target_unit["最大气血"] * 0.7) {
                data = data * 1.03;
            }

            if (src_unit["法术状态"]["仁心"] && src_unit["法术状态"]["仁心"]["层数"]) {
                data = data + (data * src_unit["法术状态"]["仁心"]["层数"] * 0.8)
                G.FightStatusUtils.canel_unit_status(fight_data, "仁心", src_unit);
            }

            if (src_unit["聚气"] && G.RandomUtils.chance(src_unit["聚气"]["概率"])) {
                data = data * (1 + src_unit["聚气"]["效果"] / 100);
                src_unit["聚气"] = undefined;
            }

            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "度厄")) {
                data = Math.floor(data * 0.5);
            }
            data = data * ratio;
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "推拿", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        }
    },
    "风起云墨": {
        //受治疗的首目标本回合内受到的所有伤害降低4%
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            if (target_unit["特殊状态"]["风起云墨"]["生效回合"] === fight_data["回合"]) {
                damage = Math.floor(damage * (1 - target_unit["神器"]["等级"] * 0.04));
            }
        }
    },
    "解毒": {
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.relieve_status(fight_data, target_unit, ["尸腐毒", "毒", "雾杀"]);
        }
    },
    "活血": {
        "技能类型": "恢复",
        "不可指定自己": true,
        "冷却回合": function (fight_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "化生寺", "化瘀")) {
                return 8;
            }
        },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [70, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let ratio = 1;
            if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "慈悲")) {
                ratio = 2;
            }
            let data = skill_level * 8 + 91 + Math.floor(src_unit["装备伤害"] / 15);
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "佛眷")) {
                target_unit["佛眷"] = { "回合": 3 };
            }
            if (target_unit["佛眷"]) {
                data = data * 1.3;
            }
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "明光")) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "归气")) {
                    if (G.RandomUtils.chance(36)) {
                        data = data * 1.6;
                    }
                    else if (G.RandomUtils.chance(18)) {
                        data = data * 2;
                    }
                }
            }
            if (src_unit["销武"]) {
                data = data * 0.5;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "止戈")) {
                data = data + (src_unit["装备伤害"] * 0.18);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "圣手") && target_unit["气血"] > target_unit["最大气血"] * 0.7) {
                data = data * 1.03;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "妙手")) {
                data = data * 1.25
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "仁心")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "仁心", 69);
            }
            if (src_unit["法术状态"]["仁心"] && src_unit["法术状态"]["仁心"]["层数"]) {
                data = data + (data * src_unit["法术状态"]["仁心"]["层数"] * 0.8)
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "化瘀")) {
                data = data * 2.2;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "佛显")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "佛显", 69, 1)
            }
            if (src_unit["聚气"] && G.RandomUtils.chance(src_unit["聚气"]["概率"])) {
                data = data * (1 + src_unit["聚气"]["效果"] / 100)
                src_unit["聚气"] = undefined;
            }
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "度厄")) {
                data = Math.floor(data * 0.5);
            }
            data = data * ratio;
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "活血", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        }
    },
    "推气过宫": {
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if ((src_unit["名称"] === "天罡星" || src_unit["名称"] === "蜘蛛女王") && src_unit["队伍"] === 0) {
                return G.RandomUtils.generate_random(5, 10)
            }
            let sl = 2
            if (skill_level >= 150) {
                sl = 6;
            } else if (skill_level >= 100) {
                sl = 5;
            } else if (skill_level >= 75) {
                sl = 4;
            } else if (skill_level >= 45) {
                sl = 3;
            }
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["虔诚"] && _SystemHourData["天气"] === 2) {
                sl = sl + 1
            }
            return sl;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let ratio = 1;
            if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "慈悲")) {
                ratio = 2;
            }
            let data = skill_level * 4 + 91 + Math.floor(src_unit["装备伤害"] / 15);
            data = data * (1 - target_list.length * 0.05);

            if (target_unit["佛眷"]) {
                data = data * 1.3;
            }
            if (src_unit["销武"]) {
                data = data * 0.5;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "止戈")) {
                data = data + (src_unit["装备伤害"] * 0.18);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "圣手") && target_unit["气血"] > target_unit["最大气血"] * 0.7) {
                data = data * 1.03;
            }
            if (src_unit["法术状态"]["仁心"]) {
                G.FightStatusUtils.canel_unit_status(fight_data, "仁心", src_unit);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "化瘀")) {
                G.FightUnitUtils.clear_unit_skill_cd(src_unit, "活血");
            }
            if (src_unit["法术状态"]["佛显"] && src_unit["法术状态"]["佛显"]["层数"] >= 3) {
                data = data * 2;
                G.FightStatusUtils.canel_unit_status(fight_data, "佛显", src_unit);
            } else {
                if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "明光")) {
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "归气")) {
                        if (G.RandomUtils.chance(36)) {
                            data = data * 1.6;
                        }
                        else
                            if (G.RandomUtils.chance(18)) {
                                data = data * 2;
                            }
                    }
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "天照")) {
                target_unit["特殊状态"]["天照"] = 40;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "佛佑")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "金刚护体", skill_level, 2);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "佛缘") && src_unit["编号"] !== target_unit["编号"]) {
                if (G.FightUtils.get_wx_buff(G.FightUnitUtils.get_unit_equipment_wx(src_unit, 2)) === G.FightUnitUtils.get_unit_equipment_wx(target_unit, 2)) {
                    data = data * 1.02;
                }
                if (G.FightUtils.get_wx_buff(G.FightUnitUtils.get_unit_equipment_wx(src_unit, 2)) === G.FightUnitUtils.get_unit_equipment_wx(target_unit, 3)) {
                    data = data * 1.02;
                }
            }
            if (src_unit["聚气"] && G.RandomUtils.chance(src_unit["聚气"]["概率"])) {
                data = data * (1 + src_unit["聚气"]["效果"] / 100);
                src_unit["聚气"] = undefined;
            }
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "度厄")) {
                data = Math.floor(data * 0.5);
            }
            if (src_unit["队伍"] === 0) {
                data = data * 0.8;
            }
            data = data * ratio;
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "推气过宫", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
            if (src_unit["招式特效"]["推气过宫"]) {
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["全屏法术"] = "推气过宫";
            }
        }
    },
    "妙手回春": {
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 150) {
                return 6;
            } else if (skill_level >= 100) {
                return 5;
            } else if (skill_level >= 75) {
                return 4;
            } else if (skill_level >= 45) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [80, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            // 使用后可以恢复多人的气血上限
            let data = 50;
            if (target_unit["气血上限"]) {
                target_unit["气血上限"] = target_unit["气血上限"] + Math.floor(data);
                if (target_unit["气血上限"] >= target_unit["最大气血"]) {
                    target_unit["气血上限"] = target_unit["最大气血"];
                }
                data = target_unit["气血上限"];
            } else {
                data = target_unit["最大气血"];
            }
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复伤势"] = data;
        },
        "取队友": function (fight_data, fight_unit, max_number, team_data) {
            // 取可以操作的目标，不进行法术状态筛选
            return G.FightUtils.get_friend_team_group_survive_unit(fight_data, fight_unit, max_number);
        }
    },
    "救死扶伤": {
        "技能类型": "恢复",
        "冷却回合": function (fight_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "化生寺", "心韧")) {
                return 8;
            }
        },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 150) {
                return 6;
            } else if (skill_level >= 100) {
                return 5;
            } else if (skill_level >= 75) {
                return 4;
            } else if (skill_level >= 50) {
                return 3;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [150, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let ratio = 1;
            if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "慈悲")) {
                ratio = 2;
            }
            let data = skill_level * 3 + 20 + Math.floor(src_unit["装备伤害"] / 15);
            if (src_unit["销武"]) {
                data = data * 0.5;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "止戈")) {
                data = data + (src_unit["装备伤害"] * 0.18);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "圣手") && target_unit["气血"] > target_unit["最大气血"] * 0.7) {
                data = data * 1.03;
            }
            if (src_unit["法术状态"]["仁心"]) {
                G.FightStatusUtils.canel_unit_status(fight_data, "仁心", src_unit);
            }
            if (src_unit["法术状态"]["佛显"] && src_unit["法术状态"]["佛显"]["层数"] >= 3) {
                data = data * 2;
                G.FightStatusUtils.canel_unit_status(fight_data, "佛显", src_unit);
            } else {
                if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "明光")) {
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "归气")) {
                        if (G.RandomUtils.chance(36)) {
                            data = data * 1.6;
                        }
                    } else {
                        if (G.RandomUtils.chance(18)) {
                            data = data * 2;
                        }
                    }
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "心韧")) {
                data = data * 2;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "天照")) {
                target_unit["特殊状态"]["天照"] = 40;
            }
            if (src_unit["聚气"] && G.RandomUtils.chance(src_unit["聚气"]["概率"])) {
                data = data * (1 + src_unit["聚气"]["效果"] / 100);
                src_unit["聚气"] = undefined;
            }
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "度厄")) {
                data = Math.floor(data * 0.5);
            }
            data = data * ratio;
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "救死扶伤", data)
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        },
        "取队友": function (fight_data, fight_unit, max_number, team_data) {
            // 取可以操作的目标，不进行法术状态筛选
            return G.FightUtils.get_friend_team_group_survive_unit(fight_data, fight_unit, max_number);
        }
    },
    "六尘不染": {
        "技能类型": "恢复",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let ratio = 1;
            if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "慈悲")) {
                ratio = 2;
            }
            let data = skill_level * 3 + 30 + Math.floor(src_unit["装备伤害"] / 15);
            let status = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.relieve_gain_status_ap)
            if (status.length > 0) {
                data = data * status.length;
                for (let index = 0; index < status.length; index++) {
                    G.FightStatusUtils.canel_unit_status(fight_data, status[index], target_unit);
                }
            }
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "度厄")) {
                data = Math.floor(data * 0.5);
            }
            data = data * ratio;
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "六尘不染", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        }
    },
    "舍生取义": {
        // 效法佛祖舍身饲鹰，不顾自己的安危竭尽全力拯救世人，牺牲自身的防御和法防，恢复友方目标当前气血至气血上限。每使用一次降低自身法伤、法防与防御，直至战斗结束。
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [150, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "防御": Math.floor(target_unit["防御"] * 0.05), "法防": Math.floor(target_unit["法防"] * 0.03) };
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let data = Math.floor(target_unit["最大气血"]);
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "舍生取义", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            if (src_unit["法术状态"]["舍生取义"]) {
                src_unit["防御"] = Math.floor(src_unit["防御"] - src_unit["防御"] * 0.05);
                src_unit["灵力"] = Math.floor(src_unit["灵力"] - src_unit["灵力"] * 0.03);
            } else {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "舍生取义", skill_level);
            }
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        }
    },
    "谆谆教诲": {
        "技能类型": "法术",
        "冷却回合": function (fight_unit) { return 8 },
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["法术状态"]["诵经"]) {
                return [[185, 20], "魔法和愤怒"];
            }
            return [[45, 20], "魔法和愤怒"];
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            if (src_unit["法术状态"]["诵经"]) {
                damage_ratio = damage_ratio * (1 + 0.02 * src_unit["法术状态"]["诵经"]["层数"]);
                G.FightStatusUtils.canel_unit_status(fight_data, "诵经", src_unit)
            }
        },
        "法术连击": function (fight_data, src_unit, target_unit, skill_level) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "修习") && G.RandomUtils.chance(25)) {
                G.FightAPSkillUtils.computing_ap_skill_damage(fight_data, src_unit, target_unit, "谆谆教诲", skill_level, 1);
            }
        },
        "法攻后触发": function (fight_data, src_unit, skill_level) {
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "聚气")) {
                src_unit["聚气"] = { "概率": 15, "效果": 30 };
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "聚念")) {
                    src_unit["聚气"] = { "概率": 15, "效果": 75 };
                } else if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "磅礴")) {
                    src_unit["聚气"] = { "概率": 60, "效果": 30 };
                }
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit) + 20;
            let fl_ratio = 1;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "销武")) {
                src_unit["销武"] = 1;
                damage = damage * (1 + (src_unit["等级"] * 0.08 / 100))
            }
            return [Math.floor(damage * fl_ratio)];
        },
        "追加固定法伤": function (fight_data, src_unit, target_unit, damage) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "授业")) {
                damage += 30;
            }
        }
    },

    //                    魔王寨                    //
    "飞砂走石": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 100) {
                return 5;
            } else if (skill_level >= 75) {
                return 4;
            } else if (skill_level >= 50) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * attack_number, "魔法"];
        },
        "法攻后触发": function (fight_data, src_unit, skill_level) {
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "魔冥", skill_level);
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            if (fight_data["回合"] >= 4 && G.RandomUtils.chance(25)) {
                // 清空风云变色的冷却
                G.FightUnitUtils.clear_unit_skill_cd(src_unit, "风云变色");
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "咒言")) {
                if (fight_data["回合"] >= 4 && G.RandomUtils.chance(25)) {
                    // 减少秘传飞砂走石冷却
                    G.FightUnitUtils.remove_unit_skill_cd(src_unit, "秘传飞砂走石", 1);
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "真炎") && G.RandomUtils.chance(10)) {
                damage_ratio = damage_ratio * 1.3;
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 2.5 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit) + 30;
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("魔王寨", target_list.length, skill_level);
            if (!src_unit["招式特效"]["飞砂走石"]) {
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            }
            if (src_unit["类型"] === "玩家") {
                let gl = 0;
                if (src_unit["法术状态"]["炙烤"]) {
                    gl = 20;
                }
                if (src_unit["神焰"] === undefined) {
                    src_unit["神焰"] = 0;
                }
                if (G.RandomUtils.chance(src_unit["神焰"] + gl)) {
                    let ratio = 0.4;
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "火神")) {
                        ratio += 0.54;
                    }
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "威吓") && target_unit["类型"] === "bb" && G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "五火神焰印")) {
                        ratio += 0.42;
                    }
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "折服") && G.RandomUtils.chance(25)) {
                        let status = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.gain_status_ap, 1);
                        if (status.length > 0) {
                            G.FightStatusUtils.canel_unit_status(fight_data, G.RandomUtils.random_get_array(status), target_unit);

                        }
                    }
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "焰威") && src_unit["焰威"] === undefined) {
                        src_unit["焰威"] = 1;
                        G.FightUnitUtils.add_fen_nu(src_unit, 3);
                    }
                    fl_ratio = fl_ratio * (1 + ratio);
                }
            }
            return [Math.floor(damage * fl_ratio)];
        },
        "法爆几率": function (fight_data, src_unit, target_unit, fbjl) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "焦土")) {
                if (G.FightUnitUtils.get_unit_equipment_wx(src_unit, 2) === "土") { //武器
                    fbjl = fbjl * 1.5
                }
                if (G.FightUnitUtils.get_unit_equipment_wx(src_unit, 3) === "土") { //衣服
                    fbjl = fbjl * 1.5
                }
            }
        },
        "追加固定法伤": function (fight_data, src_unit, target_unit, damage) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "震怒")) {
                damage += 40;
            }
        }
    },

    "秘传飞砂走石": {
        "技能类型": "法术",
        "冷却回合": function (fight_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "魔王寨", "固基")) {
                return 7;
            } else if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "魔王寨", "惊悟") && G.RandomUtils.chance(30)) {
                return 6;
            } else {
                return 8;
            }
        },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 100) {
                return 5;
            } else if (skill_level >= 75) {
                return 4;
            } else if (skill_level >= 50) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit) + 100;
            let status = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.relieve_gain_status_ap);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("魔王寨", target_list.length, skill_level);
            let kill_gl = Math.floor((target_unit["气血"] / target_unit["最大气血"]) * 50);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "旋阳")) {
                kill_gl = kill_gl * 1.05;
            }
            if (status.length > 0 && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "融骨") && G.RandomUtils.chance(25)) {
                for (let index = 0; index < status.length; index++) {
                    G.FightStatusUtils.canel_unit_status(fight_data, status[index], target_unit);
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "不灭")) {
                damage = Math.floor(damage * (1 + (fight_data["回合"] / 600)));
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "摧山")) {
                damage = damage * 1.1;
            }
            if (G.RandomUtils.custom_chance(1000, kill_gl)) {
                damage = target_unit["最大气血"] / fl_ratio;
                let last_index = fight_data["战斗流程"].length - 1;
                let unit_process_index = fight_data["战斗流程"][last_index]["挨打方"].length - 1;
                fight_data["战斗流程"][last_index]["挨打方"][unit_process_index]["无穷"] = true;
                target_unit["神佑"] = 0;
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "风云变色": {
        "技能类型": "法术",
        "冷却回合": function (fight_unit) { return 4 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 100) {
                return 6;
            } else if (skill_level >= 75) {
                return 5;
            } else if (skill_level >= 50) {
                return 4;
            } else {
                return 3;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * attack_number, "魔法"];
        },
        "法攻后触发": function (fight_data, src_unit, skill_level) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "燃魂")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "燃魂", 69)
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "魔焱")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "炙烤", 69, 4);
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = skill_level * 2.6 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("魔王寨", target_list.length, skill_level);
            if (src_unit["类型"] === "玩家") {
                let gl = 0;
                if (src_unit["法术状态"]["炙烤"]) {
                    gl = 20;
                }
                if (src_unit["神焰"] === undefined) {
                    src_unit["神焰"] = 0
                }
                if (G.RandomUtils.chance(src_unit["神焰"] + gl)) {
                    let ratio = 0.4;
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "威吓") && target_unit["类型"] === "bb"
                        && G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "五火神焰印")
                        && G.RandomUtils.chance(src_unit["神焰"] - Math.floor(G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "五火神焰印") / 2) + 2)) {
                        ratio += 0.42;
                    }
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "焰威") && src_unit["焰威"] === undefined) {
                        src_unit["焰威"] = 1;
                        G.FightUnitUtils.add_fen_nu(src_unit, 3);
                    }
                    fl_ratio = fl_ratio * (1 + ratio);
                }
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "魔焰滔天": {
        "技能类型": "法术",
        "冷却回合": function (fight_unit) { return 6 },
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [60, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit)
            let fl_ratio = 1;
            if (G.RandomUtils.chance(70)) {
                fl_ratio = fl_ratio * 1.75;
            } else {
                fl_ratio = fl_ratio * 0.3;
            }
            if (src_unit["类型"] === "玩家") {
                let gl = 0;
                if (src_unit["法术状态"]["炙烤"]) {
                    gl = 20;
                }
                if (src_unit["神焰"] === undefined) {
                    src_unit["神焰"] = 0;
                }
                if (G.RandomUtils.chance(src_unit["神焰"] + gl)) {
                    let ratio = 0.4;
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "火神")) {
                        ratio = 0.4 + 0.14;
                    }
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "威吓") && target_unit["类型"] === "bb" && G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "五火神焰印")) {
                        ratio += 0.42;
                    }
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "折服") && G.RandomUtils.chance(25)) {
                        let status = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.gain_status_ap, 1);
                        if (status.length > 0) {
                            G.FightStatusUtils.canel_unit_status(fight_data, G.RandomUtils.random_get_array(status), target_unit);
                        }
                    }
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "焰威") && src_unit["焰威"] === undefined) {
                        src_unit["焰威"] = 1;
                        G.FightUnitUtils.add_fen_nu(src_unit, 3);
                    }
                    fl_ratio = fl_ratio * (1 + ratio);
                }
            }
            if (src_unit["法术状态"]["魔冥"]) {
                let ratio = 0.03;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "咆哮")) {
                    ratio = 0.07;
                }
                if (target_unit["类型"] === "角色") {
                    ratio = 0.09;
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "咆哮")) {
                        ratio = 0.21;
                    }
                }
                fl_ratio += ratio * src_unit["法术状态"]["魔冥"]["层数"];
                G.FightStatusUtils.canel_unit_status(fight_data, "魔冥", src_unit);
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "秘传三昧真火": {
        "技能类型": "法术",
        "冷却回合": function (fight_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "魔王寨", "固基")) {
                return 7;
            } else if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "魔王寨", "惊悟") && G.RandomUtils.chance(30)) {
                return 6;
            } else {
                return 8;
            }
        },
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [[60, 0], "魔法和愤怒"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit) + 80;
            let fl_ratio = 1;
            let kill_gl = Math.floor((target_unit["气血"] / target_unit["最大气血"]) * 100);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "旋阳")) {
                kill_gl = kill_gl * 1.03;
            }
            let status = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.relieve_gain_status_ap);
            if (status.length > 0 && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "融骨")) {
                for (let index = 0; index < status.length; index++) {
                    G.FightStatusUtils.canel_unit_status(fight_data, status[index], target_unit);
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "不灭")) {
                damage = Math.floor(damage * (1 + (fight_data["回合"] / 600)));
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "极炙") && G.RandomUtils.chance(20)) {
                damage = damage * 1.2;
            }
            if (src_unit["类型"] === "玩家") {
                let gl = 0;
                if (src_unit["法术状态"]["炙烤"]) {
                    gl = 20;
                }
                if (src_unit["神焰"] === undefined) {
                    src_unit["神焰"] = 0;
                }
                if (G.RandomUtils.chance(src_unit["神焰"] + gl)) {
                    let ratio = 0.4;
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "威吓") && target_unit["类型"] === "bb" && G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "五火神焰印")) {
                        ratio += 0.42;
                    }
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "折服") && G.RandomUtils.chance(25)) {
                        let status = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.gain_status_ap, 1);
                        if (status.length > 0) {
                            G.FightStatusUtils.canel_unit_status(fight_data, G.RandomUtils.random_get_array(status), target_unit);
                        }
                    }
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "焰威") && src_unit["焰威"] === undefined) {
                        src_unit["焰威"] = 1;
                        G.FightUnitUtils.add_fen_nu(src_unit, 3)
                    }
                    fl_ratio = fl_ratio * (1 + ratio);
                }
            }
            // 概率秒杀
            if (G.RandomUtils.custom_chance(1000, kill_gl)) {
                damage = target_unit["最大气血"] / fl_ratio;
                let last_index = fight_data["战斗流程"].length - 1;
                let unit_process_index = fight_data["战斗流程"][last_index]["挨打方"].length - 1;
                fight_data["战斗流程"][last_index]["挨打方"][unit_process_index]["无穷"] = true;
                target_unit["神佑"] = 0;
            }
            return [Math.floor(damage * fl_ratio)];
        },
        "法爆几率": function (fight_data, src_unit, target_unit, fbjl) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "焦土")) {
                if (G.FightUnitUtils.get_unit_equipment_wx(src_unit, 2) === "土") { //武器
                    fbjl = fbjl * 1.5
                }
                if (G.FightUnitUtils.get_unit_equipment_wx(src_unit, 3) === "土") { //衣服
                    fbjl = fbjl * 1.5
                }
            }
        }
    },
    "魔火焚世": {
        "技能类型": "法术",
        "冷却回合": function (fight_unit) { return 6 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 5
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [400, "金鸦火羽（高级）"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = skill_level * 3.1 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("魔王寨", target_list.length, skill_level);
            if (src_unit["类型"] === "玩家") {
                let gl = 0;
                if (src_unit["法术状态"]["炙烤"]) {
                    gl = 20;
                }
                if (src_unit["神焰"] === undefined) {
                    src_unit["神焰"] = 0;
                }
                if (G.RandomUtils.chance(src_unit["神焰"] + gl)) {
                    let ratio = 0.4;
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "威吓") && target_unit["类型"] === "bb" && G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "五火神焰印")) {
                        ratio += 0.42;
                    }
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "焰威") && src_unit["焰威"] === undefined) {
                        src_unit["焰威"] = 1;
                        G.FightUnitUtils.add_fen_nu(src_unit, 3);
                    }
                    fl_ratio = fl_ratio * (1 + ratio);
                }
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "三昧真火": {
        "技能类型": "法术",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            if (fight_data["回合"] >= 4 && G.RandomUtils.chance(25)) {
                // 清空风云变色的冷却
                G.FightUnitUtils.clear_unit_skill_cd(src_unit, "风云变色");
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "咒言")) {
                if (fight_data["回合"] >= 4 && G.RandomUtils.chance(25)) {
                    // 减少秘传三昧真火冷却
                    G.FightUnitUtils.remove_unit_skill_cd(src_unit, "秘传三昧真火", 1);
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "真炎") && G.RandomUtils.chance(10)) {
                damage_ratio = damage_ratio * 1.3;
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1;
            if (src_unit["类型"] === "玩家") {
                let gl = 0;
                if (src_unit["法术状态"]["炙烤"]) {
                    gl = 20;
                }
                if (src_unit["神焰"] === undefined) {
                    src_unit["神焰"] = 0;
                }
                if (G.RandomUtils.chance(src_unit["神焰"] + gl)) {
                    let ratio = 0.4;
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "火神")) {
                        ratio += 0.54;
                    }
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "威吓") && target_unit["类型"] === "bb" && G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "五火神焰印")) {
                        ratio += 0.42;
                    }
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "折服") && G.RandomUtils.chance(25)) {
                        let status = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.gain_status_ap, 1);
                        if (status.length > 0) {
                            G.FightStatusUtils.canel_unit_status(fight_data, G.RandomUtils.random_get_array(status), target_unit);
                        }
                    }
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "焰威") && src_unit["焰威"] === undefined) {
                        src_unit["焰威"] = 1;
                        G.FightUnitUtils.add_fen_nu(src_unit, 3);
                    }
                    fl_ratio = fl_ratio * (1 + ratio);
                }
            }

            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "邪火")) {
                let ratio = 1.04
                if (G.FightUnitUtils.check_unit_rest_status(target_unit)) {
                    if (fight_data["PK战斗"]) {
                        ratio = 1.2;
                    } else {
                        ratio = 3;
                    }
                }
                fl_ratio = fl_ratio * ratio;
            }
            if (src_unit["法术状态"]["魔冥"]) {
                if (target_unit["类型"] !== "角色") {
                    fl_ratio += 0.03 * src_unit["法术状态"]["魔冥"]["层数"];
                } else {
                    fl_ratio += 0.09 * src_unit["法术状态"]["魔冥"]["层数"];
                }
                G.FightStatusUtils.canel_unit_status(fight_data, "魔冥", src_unit);
            }
            if (G.FightUnitUtils.check_unit_shen_qi_skill(src_unit, "业焰明光") && G.RandomUtils.chance(50)) {
                fl_ratio = fl_ratio * (1 + 0.25 * src_unit["神器"]["等级"]);
            }
            return [Math.floor(damage * fl_ratio), 1, 1];
        }
    },
    "摇头摆尾": {
        // 对敌方目标施放一个持续燃烧的火焰，持续5回合:随后发动一次法术攻击，随机触发三昧真火或飞砂走石。
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [80, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 4;
            if (skill_level >= 160) {
                hh = 5;
            }
            return { "回合": hh };
        },

        "法术连击": function (fight_data, src_unit, target_unit, skill_level) {
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "摇头摆尾", skill_level);
            // 随机释放一次技能
            let new_skill_name = G.RandomUtils.random_get_array(["三昧真火", "飞砂走石"]);
            let new_skill_level = G.FightUnitUtils.get_unit_skill_level(src_unit, new_skill_name);
            G.FightAPSkillUtils.computing_ap_skill_damage(fight_data, src_unit, target_unit, new_skill_name, new_skill_level, 1);
            // 连营触发连续施法
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "连营")) {
                for (let index = 0; index < 3; index++) {
                    if (G.RandomUtils.chance(25)) {
                        new_skill_name = G.RandomUtils.random_get_array(["三昧真火", "飞砂走石"]);
                        new_skill_level = G.FightUnitUtils.get_unit_skill_level(src_unit, new_skill_name);
                        let new_target_unit = G.FightUtils.get_enemy_team_single_survive_unit(fight_data, src_unit);
                        G.FightAPSkillUtils.computing_ap_skill_damage(fight_data, src_unit, new_target_unit, "摇头摆尾", skill_level, 0.4);
                        G.FightAPSkillUtils.computing_ap_skill_damage(fight_data, src_unit, new_target_unit, new_skill_name, new_skill_level, 0.4);
                    } else {
                        break;
                    }
                }
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit)
            let fl_ratio = 0.1;
            return [Math.floor(damage * fl_ratio)];
        },
        "行动前触发": function (fight_data, fight_unit) {
            let target_number = fight_unit["法术状态"]["摇头摆尾"]["攻击编号"];
            let hp = fight_unit["法术状态"]["摇头摆尾"]["等级"];
            let target = G.FightUtils.get_fight_unit_by_number(fight_data, target_number);
            G.FightComputingUtils.computing_remove_hp(fight_data, target, fight_unit, hp, "摇头摆尾");
        }
    },
    "火甲术": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [60, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["火甲术"] = {};
            let hh = 6;
            if (status_level >= 150) {
                hh = 7;
            }
            target_unit["法术状态"]["火甲术"]["回合"] = hh;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "返火")) {
                target_unit["法术状态"]["火甲术"]["返火"] = true;
            }
        }
    },
    "牛劲": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["牛劲"] = {};
            let hh = 12;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "炙烤")) {
                hh = 7;
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "炙烤", 69, 7);
            }
            target_unit["法术状态"]["牛劲"]["回合"] = hh;
            let ap_damage_result = Math.floor(status_level * 1.8)
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "充沛")) {
                target_unit["法术状态"]["牛劲"]["充沛"] = 1;
                ap_damage_result = Math.floor(ap_damage_result * 1.2);
            }
            target_unit["法术状态"]["牛劲"]["法术伤害结果"] = ap_damage_result;
        }
    },
    "炙烤": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": custom_data };
        }
    },
    "烈火真言": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"]) {
                for (let j = 0; j < src_unit["被动技能"].length; index++) {
                    let skill = src_unit["被动技能"][j];
                    if (skill["名称"] === "秘传飞砂走石" || "秘传三昧真火") {
                        skill["等级"] += 10;
                        skill["剩余冷却回合"] = G.FightUnitUtils.get_unit_ap_skill_cd(skill["名称"]);
                    }
                }
            }
            return false;
        }
    },
    "风火燎原": {
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 12 },
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [60, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["风火燎原"] = {};
            target_unit["法术状态"]["风火燎原"]["回合"] = 6;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "风火燎原")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "牛劲", 69, 6);
            }
        }
    },
    "魔王回首": {
        // 使用后可以在受到物理攻击的时候自动反击
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            let hh = 5;
            if (status_level >= 160) {
                hh = 9;
            } else if (status_level >= 120) {
                hh = 9;
            } else if (status_level >= 80) {
                hh = 9;
            } else if (status_level >= 40) {
                hh = 9;
            }
            target_unit["法术状态"]["魔王回首"] = {};
            target_unit["法术状态"]["魔王回首"]["回合"] = hh;
            target_unit["特殊状态"]["反击"] = {};
            target_unit["特殊状态"]["反击"]["伤害"] = 1;
            target_unit["特殊状态"]["反击"]["概率"] = 100;
        }
    },
    "极度疯狂": {
        // "使自己受到普通攻击时会进行反击"
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["法术状态"]["魔息术"] && fight_unit["法术状态"]["魔息术"]["魔息"]) {
                return [1, "魔法"];
            }
            return [30, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            let hh = 5;
            if (status_level >= 160) {
                hh = 9;
            } else if (status_level >= 120) {
                hh = 9;
            } else if (status_level >= 80) {
                hh = 9;
            } else if (status_level >= 40) {
                hh = 9;
            }
            target_unit["法术状态"]["极度疯狂"] = {};
            target_unit["法术状态"]["极度疯狂"]["回合"] = hh;
            target_unit["特殊状态"]["反击"] = {};
            target_unit["特殊状态"]["反击"]["伤害"] = 1;
            target_unit["特殊状态"]["反击"]["概率"] = 100;
        }
    },
    "魔冥": {
        "层数上限": 4,
        "刷新回合": 4,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 4, "层数": 1 };
        }
    },
    "燃魂": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["燃魂"] = {};
            target_unit["法术状态"]["燃魂"]["回合"] = 4;
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            damage_ratio = damage_ratio * 1.12;
        },
        "扣血触发": function (fight_data, src_unit, target_unit, remove_hp) {
            G.FightStatusUtils.canel_unit_status(fight_data, "燃魂", src_unit);
        }
    },
    "蚀天": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            if (custom_data) {
                return { "回合": custom_data }
            }
            return { "回合": 4 };
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            damage_ratio = damage_ratio * 1.15;
        }
    },

    //                    神木林                    //
    "蛊木迷瘴": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 100) {
                return 5;
            } else if (skill_level >= 75) {
                return 4;
            } else if (skill_level >= 50) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * attack_number, "魔法"];
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "伏毒") && damage_ratio < 1
                && G.FightUnitUtils.consummer_fengling(fight_data, src_unit, 1) === 1) {
                src_unit["伏毒"] = 1;
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = skill_level * 2.4 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit)
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("神木林", target_list.length, skill_level);
            let gl = 20;
            if (src_unit["伏毒"]) {
                gl = 25;
            }
            if (src_unit["法术状态"]["毒萃"]) {
                gl = 100;
            }
            if (G.RandomUtils.chance(gl)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "雾杀", 69);
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "落叶萧萧": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 100) {
                return 5;
            } else if (skill_level >= 75) {
                return 4;
            } else if (skill_level >= 50) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * attack_number, "魔法"];
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "苍风")
                && G.FightUnitUtils.consummer_fengling(fight_data, src_unit, 1) === 1) {
                damage_ratio = damage_ratio * 1.06;
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = skill_level * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit) + 50;
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("神木林", target_list.length, skill_level);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "狂叶") && !src_unit["法术状态"]["风灵"]) {
                damage += 90;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "焕新") && !src_unit["法术状态"]["风灵"] && !src_unit["法术状态"]["木精"]) {
                damage += 100;
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "风卷残云": {
        "技能类型": "法术",
        "冷却回合": function (fight_unit) { return 6 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 100) {
                return 5;
            } else if (skill_level >= 75) {
                return 4;
            } else if (skill_level >= 50) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            let ratio = 0;
            if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "月影")) {
                ratio = 0.12;
            }
            let fl = G.FightUnitUtils.consummer_fengling(fight_data, src_unit, 6);
            ratio += fl * 0.16;
            damage_ratio = damage_ratio * (1 + ratio);
        },
        "法术连击": function (fight_data, src_unit, target_unit, skill_level) {
            if (src_unit["法连"] && G.RandomUtils.chance(src_unit["法连"])) {
                let lahm = 1
                if (src_unit["柳暗花明"] && src_unit["法术状态"]["柳暗花明"]) {
                    lahm = src_unit["柳暗花明"]
                    G.FightStatusUtils.canel_unit_status(fight_data, "柳暗花明", src_unit);
                }
                if (src_unit["内丹属性"]["双星爆"]) {
                    G.FightAPSkillUtils.computing_ap_skill_damage(fight_data, src_unit, target_unit, "风卷残云", skill_level, (0.5 * lahm + src_unit["内丹属性"]["双星爆"]));
                } else if (src_unit["门派"] === "神木林") {
                    //重光 门派特色
                    let ratio = 0.5;
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "追击") && G.FightUnitUtils.consummer_fengling(fight_data, src_unit, 1) === 1) {
                        ratio = 0.8;
                    }
                    G.FightAPSkillUtils.computing_ap_skill_damage(fight_data, src_unit, target_unit, "风卷残云", skill_level, ratio * lahm);
                } else {
                    G.FightAPSkillUtils.computing_ap_skill_damage(fight_data, src_unit, target_unit, "风卷残云", skill_level, 0.5 * lahm);
                }
            } else {
                if (src_unit["柳暗花明"]) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "柳暗花明", 11, 1);
                }
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 905;
            let damage = skill_level * 3.5 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit) + 100;
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("神木林", target_list.length, skill_level);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "狂叶")) {
                damage += 90;
            }
            return [Math.floor(data * fl_ratio * 1.1)];
        }
    },
    "荆棘舞": {
        "技能类型": "法术",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 3.5 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit) + 100;
            let fl_ratio = 1;
            let fbbl = 2;
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "鞭挞")) {
                let ratio = 0.15;
                let fl_ratio = G.FightUnitUtils.consummer_fengling(fight_data, src_unit, 3);
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "劲草")) {
                    ratio = 0.2;
                }
                fl_ratio = fl_ratio * (1 + ratio * fl_ratio);
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "绞藤") && G.RandomUtils.chance(fl_ratio * 10)) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "雾杀", 69);
                }
            } else if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "风萦") && G.FightUnitUtils.consummer_fengling(fight_data, src_unit, 1) === 1) {
                fl_ratio = fl_ratio * 1.05;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "蔓延")) {
                fl_ratio = fl_ratio * 1.1;
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "蔓延", 1);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "破杀")) {
                fbbl = fbbl * 1.2;
            }
            if (src_unit["法术状态"]["雾痕"] && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "蔓延")) {
                damage += src_unit["法术状态"]["雾痕"]["层数"] * 30;
                src_unit["法术状态"]["雾痕"]["层数"] = 0;
            }
            return [Math.floor(damage * fl_ratio), fbbl];
        },
        "法爆几率": function (fight_data, src_unit, target_unit, fbjl) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "破杀")) {
                fbjl += 12;
            }
        }
    },
    "尘土刃": {
        "技能类型": "法术",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 2.9 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit)
            let fl_ratio = 1;
            let fbbl = 2;
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "风萦") && G.FightUnitUtils.consummer_fengling(fight_data, src_unit, 1) === 1) {
                fl_ratio = fl_ratio * 1.05;
            }
            // 尘土刃对玩家使用时，若有风灵，会消耗一层风灵并获得以下效果：\n1）造成伤害提高20％；2）\n额外减少目标受到伤害×50的气血上限。
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "苍埃") && G.FightUnitUtils.consummer_fengling(fight_data, src_unit, 1) === 1) {
                fl_ratio = fl_ratio * 1.2;
                target_unit["苍埃"] = 1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "蔓延")) {
                fl_ratio = fl_ratio * 1.1;
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "蔓延", 1)
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "破杀")) {
                fbbl = fbbl * 1.2;
            }
            let status = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.FightUnitUtils.get_error_ap_status(target_unit), 1);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "寄生") && status.length > 0) {
                fl_ratio += 0.35 * G.FightUnitUtils.consummer_fengling(fight_data, src_unit, 2);
            }
            return [Math.floor(damage * fl_ratio), fbbl];
        },
        "法爆几率": function (fight_data, src_unit, target_unit, fbjl) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "破杀")) {
                fbjl += 12;
            }
        },
        "扣血触发": function (fight_data, src_unit, target_unit, remove_hp) {
            if (target_unit["类型"] === "角色") {
                G.FightUnitUtils.remove_unit_hp_max(fight_data, src_unit, target_unit, Math.floor(remove_hp * 50))
            }
        }
    },
    "冰川怒": {
        // 对敌方单个目标造成法术伤害。攻击召唤兽时，有几率冻结目标(不能使用普通攻击、法术)，持续2回合。
        "不可行动": true,
        "技能类型": "法术",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["冰川怒"] = {};
            target_unit["法术状态"]["冰川怒"]["回合"] = 2;
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 3.5 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit) + 50
            let fl_ratio = 1;
            let fbbl = 2;
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "风萦") && G.FightUnitUtils.consummer_fengling(fight_data, src_unit, 1) === 1) {
                fl_ratio = fl_ratio * 1.05;
            }
            if (target_unit["类型"] === "召唤兽") {
                let gl = skill_level - target_unit["等级"] + 35;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "冰锥") && G.FightUnitUtils.consummer_fengling(fight_data, src_unit, 1) === 1) {
                    gl += 40;
                    fl_ratio = fl_ratio * 1.3;
                    let status = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.gain_status_ap, 1);
                    if (status.length > 0) {
                        G.FightStatusUtils.canel_unit_status(fight_data, G.RandomUtils.random_get_array(status), target_unit);
                    }
                }
                if (G.RandomUtils.chance(gl)) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "冰川怒", skill_level);
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "蔓延")) {
                fl_ratio = fl_ratio * 1.1;
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "蔓延", 1);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "破杀")) {
                fbbl = fbbl * 1.2;
            }
            return [Math.floor(damage * fl_ratio), fbbl];
        },
        "法爆几率": function (fight_data, src_unit, target_unit, fbjl) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "破杀")) {
                fbjl += 12;
            }
        }
    },
    "雾杀": {
        //对敌方单个目标造成持续伤害，可叠加3层，持续4回合。
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["百毒不侵"]) {
                return false;
            }
            G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "威慑", skill_level);
            let data = Math.floor(skill_level * 3 + 30) + src_unit["固定伤害"];
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["挨打方"][index]["死亡"] = G.FightComputingUtils.computing_remove_hp(fight_data, target_unit, data, src_unit)
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["挨打方"][index]["气血"] = data;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "灵木") && G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "月影")
                && G.RandomUtils.chance(G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "月影") * 2)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "雾杀", skill_level, 3);
            } else {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "雾杀", skill_level);
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            if (src_unit["法术状态"]["雾杀"]) {
                if (custom_data) {
                    target_unit["法术状态"]["雾杀"]["层数"] += custom_data
                } else {
                    target_unit["法术状态"]["雾杀"]["层数"] += 1;
                    if (target_unit["法术状态"]["雾杀"]["层数"] >= 3) {
                        target_unit["法术状态"]["雾杀"]["层数"] = 3;
                    }
                }
                target_unit["法术状态"]["雾杀"]["回合"] = 4;
                return false;
            }
            src_unit["法术状态"]["雾杀"] = {};
            src_unit["法术状态"]["雾杀"] = custom_data ? custom_data : 1;
            src_unit["法术状态"]["雾杀"]["回合"] = 4;
            target_unit["法术状态"]["雾杀"]["层数"] = custom_data ? custom_data : 1;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "迷缚")) {
                target_unit["法术状态"]["雾杀"]["迷缚"] = src_unit["编号"];
            }
            target_unit["法术状态"]["雾杀"]["等级"] = status_level;
        },
        "行动前触发": function (fight_data, fight_unit) {
            let target_number = fight_unit["法术状态"]["雾杀"]["攻击编号"];
            let hp = Math.floor(fight_unit["法术状态"]["雾杀"]["等级"] * 3 + fight_unit["法术状态"]["雾杀"]["层数"] * 200);
            let target = G.FightUtils.get_fight_unit_by_number(fight_data, target_number);
            G.FightComputingUtils.remove_hp_and_no_play(fight_data, target, fight_unit, "雾杀", hp);
        },
        "攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            if (src_unit["法术状态"]["雾杀"]["迷缚"] && src_unit["法术状态"]["雾杀"]["迷缚"] === target_unit["编号"]) {
                damage = damage * 0.97;
            }
        }
    },
    "凋零之歌": {
        "技能类型": "减益",
        "冷却回合": function (fight_unit) { return 5 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let hp = 100;
            let fl_ratio = G.FightUnitUtils.consummer_fengling(fight_data, src_unit, 6);
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "凋零之歌", skill_level, fl_ratio);
            // 找四个敌方单位添加雾杀状态
            let tmp_target_list = G.FightUtils.get_enemy_team_group_survive_unit(fight_data, src_unit, target_unit, 4);
            for (let index = 0; index < tmp_target_list.length; index++) {
                let tmp_target = tmp_target_list[index];
                if (tmp_target["编号"] !== target_unit) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, tmp_target, "雾杀", skill_level, Math.floor(fl_ratio * 0.5 + 3));
                }
            }
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["挨打方"][index]["死亡"] = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, target_unit, hp, "凋零之歌");
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["挨打方"][index]["气血"] = hp;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            src_unit["法术状态"]["凋零之歌"] = {};
            src_unit["法术状态"]["凋零之歌"]["回合"] = 2;
            target_unit["法术状态"]["凋零之歌"]["加伤"] = 1 + (16 + 2 * custom_data) / 100;
        },
        "被攻击法伤结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * target_unit["法术状态"]["凋零之歌"]["加伤"];
        }
    },
    "血雨": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["气血"] >= fight_unit["最大气血"] * 0.2) {
                return [0, "无"];
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["血雨"] = {};
            target_unit["法术状态"]["血雨"]["回合"] = 2;
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 5 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit)
            let fl_ratio = 1;
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["血雨"] === 1) {
                src_unit["奇经八脉"]["血雨"] = 0;
                damage += 200;
            } else {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "血雨", skill_level);
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "星月之惠": {
        "技能类型": "恢复",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let data = Math.floor(skill_level * 3 + 150);
            if (G.FightUnitUtils.consummer_fengling(fight_data, src_unit, 1) === 1) {
                data = data * 2;
            }

            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "月影")) {
                data = data * 1.2;
            }
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "星月之惠", data)
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        }
    },
    "炎护": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            src_unit["法术状态"]["炎护"] = {};
            src_unit["法术状态"]["炎护"]["回合"] = 6;
            if (G.FightUnitUtils.consummer_fengling(fight_data, src_unit, 1) === 1) {
                target_unit["法术状态"]["炎护"]["恢复魔法"] = Math.floor(status_level * 2);
            }
        },
        "行动前触发": function (fight_data, fight_unit) {
            // 行动前炎护回蓝
            G.FightUnitUtils.add_unit_mp(fight_unit, Math.floor(fight_unit["法术状态"]["炎护"]["恢复魔法"]));
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            let tmp_damage = Math.floor(damage * 0.5);
            if (tmp_damage > 1) {
                if (target_unit["魔法"] > tmp_damage) {
                    G.FightUnitUtils.remove_unit_mp(fight_data, target_unit, Math.floor(tmp_damage));
                    tmp_damage = 0
                } else {
                    tmp_damage = tmp_damage - target_unit["魔法"];
                    G.FightUnitUtils.remove_unit_mp(fight_data, target_unit, target_unit["魔法"]);
                }
                damage = Math.floor(damage * 0.5) + tmp_damage;
            }
        }
    },
    "蔓延": {
        // TODO 使用荆棘舞、冰川怒、尘土刃造成的伤害提高10％，并且会使得你造成的所有伤害15％，持续3回合。（效果不可叠加，可刷新）
        "刷新回合": 4,
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["蔓延"] = {};
            target_unit["法术状态"]["蔓延"]["回合"] = 3;
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            damage_ratio = damage_ratio * 1.15;
        }
    },
    "毒萃": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [300, "风灵"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 5 };
        }
    },

    "风灵": {
        "不可驱散": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "金鸦火羽（高级）"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            if (src_unit["法术状态"]["风灵"]) {
                if (custom_data) {
                    target_unit["法术状态"]["风灵"]["层数"] += custom_data;
                } else {
                    target_unit["法术状态"]["风灵"]["层数"] += 1
                }
                if (target_unit["法术状态"]["风灵"]["层数"] >= 6) {
                    target_unit["法术状态"]["风灵"]["层数"] = 6
                }
                return false;
            }
            src_unit["法术状态"]["风灵"] = {};
            src_unit["法术状态"]["风灵"]["回合"] = 999;
            let cs = Math.floor(status_level / 60);
            if (cs < 1) {
                cs = 1;
            }
            target_unit["法术状态"]["风灵"]["层数"] = custom_data ? custom_data : cs;
        }
    },
    "凭虚御风": {
        "技能类型": "神器",
        "层数上限": 3,
        "不可驱散": true,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "层数": 1 };
        },
        "死亡触发": function (fight_data, src_unit, target_unit) {
            G.FightStatusUtils.canel_unit_status(fight_data, "凭虚御风", target_unit)
        },
        "追加固定法伤": function (fight_data, src_unit, target_unit, damage) {
            damage += 40 * src_unit["法术状态"]["凭虚御风"]["层数"] * src_unit["神器"]["等级"];
        }
    },
    "花语歌谣": {
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 10 },
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "金鸦火羽（高级）"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) { //效果未写
            return { "回合": 999 };
        }
    },
    "木精": {
        "层数上限": 3,
        "不可驱散": true,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            if (custom_data >= 3) {
                custom_data = 3
            }
            return { "回合": 999, "层数": custom_data };
        }
    },
    "疾风秋叶": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let sl = 4
            if (skill_level >= 100) {
                sl = 6;
            } else if (skill_level >= 75) {
                sl = 5;
            }
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["凉秋"]) {
                sl = sl + 1
            }
            return sl;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "神木林", "凉秋")) {
                return [[attack_number * attack_number, 2], "木精"];
            } else {
                return [[attack_number * attack_number, 1], "木精"];
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205
            let damage = skill_level * 2.4 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("神木林", target_list.length, skill_level);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "奉愿")) {
                fl_ratio = fl_ratio * 1.1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "凉秋")) {
                fl_ratio = fl_ratio * 1.04;
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "枯木逢春": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [[100, 3], "木精"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = skill_level * 1 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("神木林", target_list.length, skill_level);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "奉愿")) {
                fl_ratio = fl_ratio * 1.1;
            }
            if (target_index === 0) {
                damage = damage * 2;
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "古藤秘咒": {
        "技能类型": "法术",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [[30, 2], "木精"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 2.8 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit)
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("神木林", target_list.length, skill_level);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "奉愿")) {
                fl_ratio = fl_ratio * 1.1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "碾杀") && target_unit["类型"] === "玩家") {
                fl_ratio = fl_ratio * 1.32;
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "蜜润": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["滋养"]) {
                return 1;
            }
            if (skill_level >= 150) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [25 * attack_number, "魔法"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"]) {
                if (G.FightUnitUtils.consummer_fengling(fight_data, src_unit, 1) === 1) {
                    src_unit["蜜润翻倍"] = 1;
                }
            }
        },
        "增益独立算法": function (fight_data, src_unit, target_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "滋养")) {
                target_unit = src_unit;
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            src_unit["法术状态"]["蜜润"] = {};
            let hh = 9;
            if (status_level >= 175) {
                hh = 11;
            } else if (status_level >= 140) {
                hh = 10;
            }
            if (src_unit["蜜润翻倍"]) {
                hh = hh * 2;
            }
            src_unit["法术状态"]["蜜润"]["回合"] = hh;
            let ap_damage = status_level;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "滋养")) {
                ap_damage += Math.floor(target_unit["法伤"] * 0.15);
                target_unit["法术状态"]["蜜润"]["滋养"] = 1
            }
            src_unit["法术状态"]["蜜润"]["法伤"] = ap_damage;
        }
    },

    //                    方寸山                    //
    "五雷咒": {
        "技能类型": "法术",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let target_count = 1;
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "奔雷")) {
                target_count = 2;
                if (src_unit["法术状态"]["怒霆"] && src_unit["法术状态"]["怒霆"]["层数"] >= 5) {
                    target_count = 5;
                    G.FightStatusUtils.canel_unit_status(fight_data, "怒霆", src_unit);
                }
            }
            // 当敌方所有玩家单位都带有“炼魂”时，五雷咒额外作用2个单位.
            let status_count = G.FightUtils.get_enemy_ap_status_count(fight_data, src_unit, "炼魂");
            if (status_count["角色状态数量"] === status_count["角色数量"]) {
                target_count += 2;
            }
            return target_count;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "奔雷") &&
                G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "超导") &&
                _SystemHourData["天气"] === 2) {
                damage_ratio = damage_ratio * 1.2;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "怒霆")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "怒霆", 1);
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1 - target_list.length * 0.1;
            if (fl_ratio < 0.7) {
                fl_ratio = 0.7;
            }
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "悲恸") && target_unit["类型"] === "bb") {
                fl_ratio += 0.3;
                if (target_unit["悲恸"] && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "余悸")) {
                    fl_ratio += 0.1;
                }
                target_unit["悲恸"] = 1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "策电") && target_index === 0) {
                fl_ratio += 0.05;
                if (skill_level >= 125) {
                    fl_ratio += 0.05;
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "顺势") && target_unit["类型"] === "角色" && target_unit["参战宝宝"] === undefined) {
                fl_ratio += 0.08;
            }
            if (src_unit["法术状态"]["钟馗论道"]) {
                fl_ratio += 0.7;
            }
            return [Math.floor(damage * fl_ratio)];
        },
        "法爆几率": function (fight_data, src_unit, target_unit, fbjl) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "驱雷")) {
                fbjl += 3;
            }
        },
        "法术减伤": function (fight_data, src_unit, target_unit, remove_damage_ratio) {
            if (target_unit["法术状态"]["法术防御"] && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "鬼怮")) {
                if (target_unit["编号"] === src_unit["指令"]["目标"]) {
                    remove_damage_ratio = 0;
                } else {
                    remove_damage_ratio = 0.1;
                }
            }
        }
    },
    "落雷符": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 60) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * attack_number, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 2.3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit)
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("方寸山", target_list.length, skill_level);
            if (src_unit["石破天惊"]) {
                damage += src_unit["石破天惊"];
            }
            if (target_unit["类型"] === "角色") {
                damage = 1;
            }
            return [Math.floor(damage * fl_ratio)];
        },
        "法爆几率": function (fight_data, src_unit, target_unit, fbjl) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "雷动") && target_unit["编号"] === src_unit["指令"]["目标"]) {
                fbjl += 15;
            }
        }
    },
    "五雷正法": {
        "技能类型": "法术",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let target_count = 1;
            if (src_unit["法术状态"]["雷法·震煞"]) {
                target_count = 1 + src_unit["法术状态"]["雷法·震煞"]["层数"];
            }
            return target_count;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "震怒")) {
                if (src_unit["法术状态"]["雷法·坤伏"]["层数"] > 0 && src_unit["法术状态"]["雷法·崩裂"]["层数"] === 0 && src_unit["法术状态"]["雷法·轰天"]["层数"] === 0 && src_unit["法术状态"]["雷法·震煞"]["层数"] === 0) {
                    damage_ratio += 0.16;
                }
                if (src_unit["法术状态"]["雷法·坤伏"]["层数"] === 0 && src_unit["法术状态"]["雷法·崩裂"]["层数"] > 0 && src_unit["法术状态"]["雷法·轰天"]["层数"] === 0 && src_unit["法术状态"]["雷法·震煞"]["层数"] === 0) {
                    damage_ratio += 0.16;
                }
                if (src_unit["法术状态"]["雷法·坤伏"]["层数"] === 0 && src_unit["法术状态"]["雷法·崩裂"]["层数"] === 0 && src_unit["法术状态"]["雷法·轰天"]["层数"] > 0 && src_unit["法术状态"]["雷法·震煞"]["层数"] === 0) {
                    damage_ratio += 0.16;
                }
                if (src_unit["法术状态"]["雷法·坤伏"]["层数"] === 0 && src_unit["法术状态"]["雷法·崩裂"]["层数"] === 0 && src_unit["法术状态"]["雷法·轰天"]["层数"] === 0 && src_unit["法术状态"]["雷法·震煞"]["层数"] > 0) {
                    damage_ratio += 0.16;
                }
                if (src_unit["法术状态"]["雷法·坤伏"]["层数"] === 0 && src_unit["法术状态"]["雷法·崩裂"]["层数"] === 0 && src_unit["法术状态"]["雷法·轰天"]["层数"] === 0 && src_unit["法术状态"]["雷法·震煞"]["层数"] === 0) {
                    damage_ratio += 0.16;
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "天篆")) {
                if (src_unit["法术状态"]["雷法·坤伏"]["层数"] > 0 && src_unit["法术状态"]["雷法·崩裂"]["层数"] > 0 && src_unit["法术状态"]["雷法·轰天"]["层数"] > 0 && src_unit["法术状态"]["雷法·震煞"]["层数"] === 0) {
                    damage_ratio += 0.16;
                }
                if (src_unit["法术状态"]["雷法·坤伏"]["层数"] > 0 && src_unit["法术状态"]["雷法·崩裂"]["层数"] > 0 && src_unit["法术状态"]["雷法·轰天"]["层数"] === 0 && src_unit["法术状态"]["雷法·震煞"]["层数"] > 0) {
                    damage_ratio += 0.16;
                }
                if (src_unit["法术状态"]["雷法·坤伏"]["层数"] === 0 && src_unit["法术状态"]["雷法·崩裂"]["层数"] > 0 && src_unit["法术状态"]["雷法·轰天"]["层数"] > 0 && src_unit["法术状态"]["雷法·震煞"]["层数"] > 0) {
                    damage_ratio += 0.16;
                }
                if (src_unit["法术状态"]["雷法·坤伏"]["层数"] > 0 && src_unit["法术状态"]["雷法·崩裂"]["层数"] === 0 && src_unit["法术状态"]["雷法·轰天"] > 0 && src_unit["法术状态"]["雷法·震煞"]["层数"] > 0) {
                    damage_ratio += 0.08;
                }
            }
            if (src_unit["类型"] === "角色" && src_unit["法术状态"]["雷法·倒海"] && src_unit["法术状态"]["雷法·倒海"]["层数"] > 0) {
                damage_ratio += 0.08 * src_unit["法术状态"]["雷法·倒海"]["层数"];
            }
            if (src_unit["认证码"] && src_unit["法术状态"]["雷法·翻天"] && src_unit["法术状态"]["雷法·翻天"]["层数"] > 0) {
                damage_ratio += 0.3 * src_unit["法术状态"]["雷法·翻天"]["层数"];
            }
            if (src_unit["法术状态"]["雷法·崩裂"]) {
                damage_ratio += 0.2 * src_unit["法术状态"]["雷法·崩裂"]["层数"];
            }
            if (src_unit["法术状态"]["雷法·坤伏"]) {
            }
            if (src_unit["法术状态"]["雷法·倒海"]) {
                src_unit["法术状态"]["雷法·倒海"]["层数"] = 0;
            }
            if (src_unit["法术状态"]["雷法·翻天"]) {
                src_unit["法术状态"]["雷法·翻天"]["层数"] = 0;
            }
            src_unit["法术状态"]["雷法·崩裂"]["层数"] = 0;
            src_unit["法术状态"]["雷法·震煞"]["层数"] = 0;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "五雷·挪移") && _SystemHourData["天气"] === 2) {
                damage_ratio = damage_ratio * 1.03;
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit)
            let fl_ratio = 1 - target_list.length * 0.1;
            let status_list = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.relieve_gain_status_ap)
            if (status_list.length > 0 && src_unit["法术状态"]["雷法·轰天"]["层数"] > 0) {
                for (let index = 0; index < status_list.length; index++) {
                    G.FightStatusUtils.canel_unit_status(fight_data, status_list[index], target_unit)
                }
            }
            src_unit["法术状态"]["雷法·轰天"]["层数"] = 0;
            if (fl_ratio < 0.7) {
                fl_ratio = 0.7;
            }
            return [Math.floor(damage * fl_ratio)];
        },
        "法爆几率": function (fight_data, src_unit, target_unit, fbjl) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "雷动") && target_unit["编号"] === src_unit["指令"]["目标"]) {
                fbjl += 15;
            }
            if (src_unit["法术状态"]["雷法·坤伏"]["层数"] > 0) {
                fbjl += 8 * src_unit["法术状态"]["雷法·坤伏"]["层数"];
                src_unit["法术状态"]["雷法·坤伏"]["层数"] = 0;
            }
        }
    },
    " 符咒": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },
    "雷法·崩裂": {
        "技能类型": "法术",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1 - target_list.length * 0.1;
            let fyjn = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.relieve_gain_status_ap);
            if (fl_ratio < 0.7) {
                fl_ratio = 0.7;
            }
            return [Math.floor(damage * fl_ratio)];
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            src_unit["法术状态"]["雷法·崩裂"]["层数"] = src_unit["法术状态"]["符咒"]["层数"]
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "符威")) {
                G.FightUnitUtils.add_fen_nu(src_unit, src_unit["法术状态"]["雷法·崩裂"]["层数"])
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "五雷·挪移") && _SystemHourData["天气"] === 2) {
                src_unit["法术状态"]["雷法·崩裂"]["层数"] = src_unit["法术状态"]["雷法·崩裂"]["层数"] + 1
            }
        }
    },
    "雷法·震煞": {
        "技能类型": "法术",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            src_unit["法术状态"]["雷法·震煞"]["层数"] = src_unit["法术状态"]["符咒"]["层数"]
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "符威")) {
                G.FightUnitUtils.add_fen_nu(src_unit, src_unit["法术状态"]["雷法·震煞"]["层数"])
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "五雷·挪移") && _SystemHourData["天气"] === 2) {
                damage_ratio = damage_ratio * 1.03;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "五雷·挪移") && _SystemHourData["天气"] === 1) {
                src_unit["法术状态"]["雷法·震煞"]["层数"] = src_unit["法术状态"]["雷法·震煞"]["层数"] + 1;
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit)
            let fl_ratio = 1 - target_list.length * 0.1;
            G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.relieve_gain_status_ap)
            if (fl_ratio < 0.7) {
                fl_ratio = 0.7;
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "雷法·坤伏": {
        "技能类型": "法术",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            src_unit["法术状态"]["雷法·坤伏"]["层数"] = src_unit["法术状态"]["符咒"]["层数"]
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "符威")) {
                G.FightUnitUtils.add_fen_nu(src_unit, src_unit["法术状态"]["雷法·坤伏"]["层数"])
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "五雷·挪移") && _SystemHourData["天气"] === 2) {
                damage_ratio = damage_ratio * 1.03;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "五雷·挪移") && _SystemHourData["天气"] === 3) {
                src_unit["法术状态"]["雷法·坤伏"]["层数"] = src_unit["法术状态"]["雷法·坤伏"]["层数"] + 1
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1 - target_list.length * 0.1;
            let fyjn = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.relieve_gain_status_ap);
            if (fl_ratio < 0.7) {
                fl_ratio = 0.7;
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "雷法·轰天": {
        "技能类型": "法术",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            src_unit["法术状态"]["雷法·轰天"]["层数"] = src_unit["法术状态"]["符咒"]["层数"]
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "符威")) {
                G.FightUnitUtils.add_fen_nu(src_unit, src_unit["法术状态"]["雷法·轰天"]["层数"])
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "五雷·挪移") && _SystemHourData["天气"] === 2) {
                damage_ratio = damage_ratio * 1.03
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1 - target_list.length * 0.1;
            let fyjn = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.relieve_gain_status_ap);
            if (fl_ratio < 0.7) {
                fl_ratio = 0.7;
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "雷法·翻天": {
        "技能类型": "法术",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            src_unit["法术状态"]["雷法·翻天"]["层数"] = src_unit["法术状态"]["符咒"]["层数"]
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "符威")) {
                G.FightUnitUtils.add_fen_nu(src_unit, src_unit["法术状态"]["雷法·翻天"]["层数"])
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "五雷·挪移") && _SystemHourData["天气"] === 2) {
                damage_ratio = damage_ratio * 1.03
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1 - target_list.length * 0.1;
            let fyjn = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.relieve_gain_status_ap);
            if (fl_ratio < 0.7) {
                fl_ratio = 0.7;
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "雷法·倒海": {
        "技能类型": "法术",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            src_unit["法术状态"]["雷法·倒海"]["层数"] = src_unit["法术状态"]["符咒"]["层数"];
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "符威")) {
                G.FightUnitUtils.add_fen_nu(src_unit, src_unit["法术状态"]["雷法·倒海"]["层数"])
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "五雷·挪移") && _SystemHourData["天气"] === 2) {
                damage_ratio = damage_ratio * 1.03;
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1 - target_list.length * 0.1;
            let fyjn = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.relieve_gain_status_ap);
            if (fl_ratio < 0.7) {
                fl_ratio = 0.7;
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "顺势而为": {
        "技能类型": "单封",
        "冷却回合": function (fight_unit) { return 6 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [60, "愤怒"];
        },
        "命中几率": function (fight_data, src_unit, target_unit, skill_level, mzjl) {
            return 100;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["顺势而为"] = {};
            target_unit["法术状态"]["顺势而为"]["回合"] = 2;
        }
    },
    "催眠符": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [45, "魔法"];
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["驱魔"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "催眠符", skill_level);
            }
        },
        "封印等级": function (fight_data, src_unit, target_unit, skill_level, fy_level) {
            return fy_level + 5;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            let hh = 1;
            if (status_level >= 125) {
                hh = 5;
            } else if (status_level >= 100) {
                hh = 4;
            } else if (status_level >= 75) {
                hh = 3;
            } else if (status_level >= 45) {
                hh = 2;
            }
            if (src_unit["法术状态"]["蜜润"] === undefined) {
                src_unit["法术状态"]["蜜润"] = {};
            }
            src_unit["法术状态"]["蜜润"]["催眠符"] = hh;
            target_unit["法术状态"]["催眠符"] = {};
            target_unit["法术状态"]["催眠符"]["附加参数"] = 1;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "黄粱")) {
                target_unit["法术状态"]["催眠符"]["附加参数"] = 30;
            }
            target_unit["法术状态"]["催眠符"]["当前回合"] = 1;
            if (custom_data) {
                target_unit["法术状态"]["催眠符"]["回合"] = custom_data;
            }
        },
        "扣血触发": function (fight_data, src_unit, target_unit, remove_hp) {
            if (remove_hp > target_unit["法术状态"]["催眠符"]["附加参数"]) {
                G.FightStatusUtils.canel_unit_status(fight_data, "催眠符", target_unit);
            }
        }
    },
    "落魄符": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 1;
            if (skill_level >= 125) {
                hh = 6;
            } else if (skill_level >= 100) {
                hh = 5;
            } else if (skill_level >= 75) {
                hh = 4;
            } else if (skill_level >= 45) {
                hh = 3;
            } else if (skill_level >= 25) {
                hh = 2;
            }
            return { "回合": hh };
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["驱魔"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "落魄符", skill_level);
            }
        }
    },
    "追魂符": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [55, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 2
            if (skill_level >= 125) {
                hh = 7;
            } else if (skill_level >= 100) {
                hh = 6;
            } else if (skill_level >= 75) {
                hh = 5;
            } else if (skill_level >= 45) {
                hh = 4;
            } else if (skill_level >= 25) {
                hh = 3;
            }
            return { "回合": hh, "防御": skill_level * 2, "负面": "减防御" };
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["驱魔"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "追魂符", skill_level);
            }
        }
    },
    "失忆符": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 2
            if (skill_level >= 125) {
                hh = 7;
            } else if (skill_level >= 100) {
                hh = 6;
            } else if (skill_level >= 75) {
                hh = 5;
            } else if (skill_level >= 45) {
                hh = 4;
            } else if (skill_level >= 25) {
                hh = 3;
            }
            return { "回合": hh };
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["驱魔"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "失忆符", skill_level);
            }
        }
    },
    "定身符": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 3;
            if (skill_level >= 125) {
                hh = 7;
            } else if (skill_level >= 100) {
                hh = 6;
            } else if (skill_level >= 75) {
                hh = 5;
            } else if (skill_level >= 45) {
                hh = 4;
            }
            let zhi = 0.05
            if (fight_unit["奇经八脉"] && (fight_unit["奇经八脉"]["苦缠"] || fight_unit["奇经八脉"]["灵咒"])) {
                zhi = 0.08
            }
            let 防御1 = Math.floor(target_unit["防御"] * zhi)
            let 法防1 = Math.floor(target_unit["法防"] * zhi)
            return { "回合": hh, "防御": 防御1, "法防": 法防1, "负面": "减双抗" };
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["驱魔"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "定身符", skill_level);
            }
        }
    },
    "失魂符": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [60, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 2
            if (skill_level >= 125) {
                hh = 6;
            } else if (skill_level >= 100) {
                hh = 5;
            } else if (skill_level >= 75) {
                hh = 4;
            } else if (skill_level >= 45) {
                hh = 3;
            }
            let zhi = 0.1
            if (fight_unit["奇经八脉"] && (fight_unit["奇经八脉"]["苦缠"] || fight_unit["奇经八脉"]["灵咒"])) {
                zhi = 0.13
            }
            return { "回合": hh, "防御": Math.floor(target_unit["防御"] * zhi), "负面": "减防御" };
        }
    },
    "失心符": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 1;
            if (skill_level >= 125) {
                hh = 6;
            } else if (skill_level >= 100) {
                hh = 5;
            } else if (skill_level >= 75) {
                hh = 4;
            } else if (skill_level >= 45) {
                hh = 3;
            } else if (skill_level >= 25) {
                hh = 2;
            }
            let zhi = 0.1
            if (fight_unit["奇经八脉"] && (fight_unit["奇经八脉"]["苦缠"] || fight_unit["奇经八脉"]["灵咒"])) {
                zhi = 0.13
            }
            return { "回合": hh, "法防": Math.floor(target_unit["法防"] * zhi), "负面": "减法防" };
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["驱魔"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "失心符", skill_level);
            }
        }
    },
    "碎甲符": {
        "技能类型": "群封",
        "冷却回合": function (fight_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "方寸山", "碎甲")) {
                return 6;
            }
        },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 150) {
                return 4;
            } else if (skill_level >= 120) {
                return 3;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50 * attack_number, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["碎甲符"] = {};
            let hh = 4;
            if (status_level >= 150) {
                hh = 5;
            }
            target_unit["法术状态"]["碎甲符"]["回合"] = hh;
            target_unit["法术状态"]["碎甲符"]["防御"] = status_level;
            target_unit["法术状态"]["碎甲符"]["法防"] = status_level;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "碎甲")) {
                target_unit["法术状态"]["碎甲符"]["减双抗"] = status_level;
                target_unit["法术状态"]["碎甲符"]["递减名称"] = "减双抗";
                target_unit["法术状态"]["碎甲符"]["回合递减"] = Math.floor(status_level * 0.2);
                target_unit["法术状态"]["碎甲符"]["负面"] = "减双抗";
            }
        },
        "被攻击基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            if (target_unit["法术状态"]["碎甲符"]["减双抗"]) {
                defense = defense - target_unit["法术状态"]["碎甲符"]["减双抗"];
            }
        }
    },
    "归元咒": {
        "技能类型": "恢复",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [20, "魔法"];
        },
        // TODO 主动
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index, 主动) {
            let data = skill_level + 5;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "吐纳")) {
                let qx = src_unit["魔法"];
                if (qx >= Math.floor(target_unit["气血上限"] * 0.5)) {
                    qx = Math.floor(target_unit["气血上限"] * 0.5);
                }
                G.FightUnitUtils.remove_unit_mp(src_unit, Math.floor(qx * 0.25));
                data += qx;
            }
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "归元咒", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        }
    },
    "凝神术": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["凝神术"] = {};
            target_unit["法术状态"]["凝神术"]["回合"] = 10;
        }
    },
    "练魂": {
        "不可驱散": true,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },
    "炼魂": {
        "不可驱散": true,
        // “炼魂”状态持续到战斗结束，无法被移除
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },
    "摧心": {
        "技能类型": "减益",
        "刷新回合": 3,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 3, "伤害": Math.floor(target_unit["伤害"] * 0.12), "防御": Math.floor(target_unit["防御"] * 0.12), "法伤": Math.floor(target_unit["法伤"] * 0.12), "法防": Math.floor(target_unit["法防"] * 0.12) };
        }
    },

    "怒霆": {
        "层数上限": 5,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "层数": 1 };
        }
    },

    "钟馗论道": {
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 8 },
        "指定对象": "自己",
        "不可驱散": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["气血"] >= fight_unit["最大气血"] * 0.5) {
                return [80, "魔法和气血"];
            }
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"]) {
                let hp = src_unit["气血"] - 1;
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾死亡"] = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, src_unit, hp, "钟馗论道");
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾气血"] = hp;
            }
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 5 };
        }
    },
    "乾天罡气": {
        "技能类型": "恢复",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["气血"] > 20) {
                return [0, "无"];
            };
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let hp = 20;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "吐纳") && src_unit["气血"] > src_unit["最大气血"] * 0.5) {
                hp = src_unit["最大气血"] - src_unit["气血"]
                G.FightUnitUtils.add_unit_mp(src_unit, skill_level)
            } else {
                G.FightUnitUtils.add_unit_mp(src_unit, skill_level)
            }
            src_unit["气血"] = src_unit["气血"] - hp;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["扣除气血"] = hp;
        }
    },
    "分身术": {
        "技能类型": "增益",
        "冷却回合": function (fight_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "方寸山", "幻变")) {
                return 8;
            }
        },
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [80, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            src_unit["法术状态"]["分身术"] = {};
            let hh = 6;
            if (status_level >= 150) {
                hh = 7;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "化身")) {
                hh += 1;
            }
            src_unit["法术状态"]["分身术"]["回合"] = hh;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "幻变")) {
                target_unit["法术状态"]["分身术"]["减伤"] = 0.2;
            } else if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "批亢")) {
                target_unit["法术状态"]["分身术"]["减伤"] = 0.15;
            }
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            if (target_unit["法术状态"]["分身术"]["减伤"]) {
                damage -= damage * target_unit["法术状态"]["分身术"]["减伤"];
            }
        }
    },
    "否极泰来": {
        "技能类型": "减益",
        "冷却回合": function (fight_unit) { return 12 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "金鸦火羽（高级）"];
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.relieve_status(target_unit, G.FightUnitUtils.get_error_ap_status(src_unit))
            let lssj = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.relieve_gain_status_ap);
            if (lssj.length > 0) {
                lssj = G.RandomUtils.random_get_array(lssj);
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, lssj, skill_level);
            }
        }
    },
    //                    女儿村                    //
    "楚楚可怜": {
        // 使自身进入隐身状态但也无法进行多数行动
        "不可行动": true,
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 5;
            if (skill_level >= 160) {
                hh = 9;
            } else if (skill_level >= 120) {
                hh = 8;
            } else if (skill_level >= 80) {
                hh = 7;
            } else if (skill_level >= 40) {
                hh = 6;
            }
            return { "回合": hh };
        }
    },
    "一笑倾城": {
        "技能类型": "群封",
        "冷却回合": function (fight_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "女儿村", "倾国")) {
                return 8;
            }
        },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 3;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [60, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            if (fight_unit["奇经八脉"] && fight_unit["奇经八脉"]["嫣然"] && G.RandomUtils.chance(40)) {
                return { "回合": 3 }
            }
            return { "回合": 2 };
        },
        "封印等级": function (fight_data, src_unit, target_unit, skill_level, fy_level) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "嫣然") && target_unit["编号"] === src_unit["指令"]["目标"]) {
                return fy_level + 8;
            } else if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "倾国")) {
                return fy_level + 8;
            }
            return fy_level;
        }
    },
    "满天花雨": {
        // 提高自身伤害力(最多叠加3次，持续到战斗结束)攻击敌方单个目标，有几率使目标中毒。
        "技能类型": "物理",
        "佛法加成": true,
        "层数上限": 3,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "层数": 1 };
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let lj_number = 1;
            let cf_number = 1;
            if (src_unit["法术状态"]["自矜"] && src_unit["奇经八脉"] && src_unit["奇经八脉"]["当前流派"] === "花间美人") {
                lj_number = 2;
                cf_number = 2;
            }
            return { "返回": false, "重复次数": cf_number, "起始伤害": 1.1, "叠加伤害": 0, "重复提示": false, "连击次数": lj_number };
        },
        "物理连击触发": function (fight_data, src_unit, target_unit, target_list, attack_number) {
            if (attack_number === 1) {
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["战斗法术"] = "满天花雨";
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["寄存目标"] = target_list.map(e => e["编号"]);
            }
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "满天花雨", 69);
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["当前流派"] === "花间美人") {
                if (src_unit["法术状态"]["自矜"]) {
                    G.FightStatusUtils.canel_unit_status(fight_data, "自矜", src_unit);
                } else {
                    let gl = 40;
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "汹涌")) {
                        gl = 55;
                    }
                    if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "曼陀罗")) {
                        gl = gl + G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "曼陀罗") + 5;
                    }
                    if (G.RandomUtils.chance(gl)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "自矜", 69);
                        if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "怒放")) {
                            G.FightUnitUtils.add_fen_nu(src_unit, 6);
                        }
                    }
                }
            }

            if (G.RandomUtils.chance(99) && G.FightSealSkillUtils.get_unit_fengyin_success(fight_data, src_unit, target_list[0], "毒", src_unit["等级"])) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_list[0], "毒", src_unit["等级"], "满天花雨");
                target_list[0]["法术状态"]["毒"]["回合"] = 5;
                if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["淬芒"]) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "淬芒", 69);
                } else if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["天香"]) {
                    G.FightUnitUtils.add_fen_nu(src_unit, 5);
                }
            }
            if (src_unit["花谢花飞"]) {
                src_unit["花谢花飞"] = undefined;
                //物攻技能计算
                G.FightADSkillUtils.computing_ad_skill(fight_data, src_unit, "满天花雨", 11);
            }
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "满天花雨");
            damage = damage * (1 + src_unit["法术状态"]["满天花雨"]["层数"] / 20);
        }
    },
    "花谢花飞": {
        "技能类型": "物理",
        "冷却回合": function (fight_unit) { return 16 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "物攻前触发": function (fight_data, src_unit, skill_name) {
            src_unit["花谢花飞"] = 1;
        }
    },
    "花护": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["花护"] = {};
            target_unit["法术状态"]["花护"]["回合"] = 1;
        }
    },
    "毒": {
        // 物理攻击时有15%的几率使敌人中毒，中毒后每回合减少10%的气血和5%的魔法
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            if (target_unit["法术状态"]["百毒不侵"] ||
                (target_unit["统御属性"] && target_unit["统御属性"]["水来土掩"] && G.RandomUtils.chance(target_unit["统御属性"]["水来土掩"])) ||
                (target_unit["高级毒"] && !G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "杏花"))) {
                return false;
            }
            target_unit["法术状态"]["毒"] = {};
            target_unit["法术状态"]["毒"]["回合"] = 5;
            target_unit["法术状态"]["毒"]["等级"] = status_level;
            if (custom_data) {
                target_unit["法术状态"]["毒"]["满天花雨"] = 1;
            }
            if (src_unit["门派"] === "女儿村") {
                target_unit["法术状态"]["毒"]["门派"] = "女儿村"
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "毒引")) {
                    target_unit["法术状态"]["毒"]["毒引"] = true;
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "余韵")) {
                    target_unit["法术状态"]["毒"]["余韵"] = 1;
                }
            }
            if (src_unit["超级毒"]) {
                // 1攻击 2防御 3法伤 4法防
                target_unit["法术状态"]["毒"]["超级毒"] = G.RandomUtils.generate_random(1, 4);
            }
        },
        "算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["毒"]) {
                return false;
            } else {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "毒", skill_level);
            }
        },
        "变身": function (fight_unit) {
            fight_unit["毒"] = 15;
        },
        "取消变身": function (fight_unit) {
            fight_unit["毒"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级毒") && !fight_unit["已加技能"].has("超级毒")) {
                fight_unit["毒"] = 15;
            }
        },
        "行动前触发": function (fight_data, fight_unit) {
            let hp = Math.floor(fight_unit["气血"] * 0.1);
            //其他毒
            if (fight_unit["法术状态"]["毒"]["回合掉血"]) {
                let mp = Math.floor(fight_unit["魔法"] * 0.05);
                if (fight_unit["法术状态"]["毒"]["曼陀罗"]) {
                    mp = mp * fight_unit["法术状态"]["毒"]["曼陀罗"];
                }
                if (hp < 1) {
                    hp = 1;
                }
                if (mp < 1) {
                    mp = 0;
                }
                //满天花雨 不掉蓝
                if (fight_unit["法术状态"]["毒"]["满天花雨"] === undefined) {
                    G.FightUnitUtils.remove_unit_mp(fight_data, fight_unit, mp);
                }
            } else {
                //女儿村的毒
                if (fight_unit["法术状态"]["毒"]["回合掉血"]) {
                    hp = Math.floor(fight_unit["法术状态"]["毒"]["回合掉血"]);
                }
            }
            if (fight_unit["法术状态"]["毒"]["余韵"]) {
                G.FightUnitUtils.remove_unit_mp(fight_data, fight_unit, 30);
            }
            if (fight_unit["法术状态"]["毒"]["曼陀罗"]) {
                hp = Math.floor(hp * fight_unit["法术状态"]["毒"]["曼陀罗"])
            }
            if (hp < 1) {
                hp = 1;
            }
            let target_number = fight_unit["法术状态"]["毒"]["攻击编号"];
            let target = G.FightUtils.get_fight_unit_by_number(fight_data, target_number);
            G.FightComputingUtils.remove_hp_and_no_play(fight_data, target, fight_unit, "毒", hp);
        },
        "攻击物伤结果": function (fight_data, src_unit, target_unit, damage) {
            if (src_unit["法术状态"]["毒"] && src_unit["法术状态"]["毒"]["超级毒"]) {
                let type = src_unit["法术状态"]["毒"]["超级毒"];
                //降攻击
                if (type === 1) {
                    damage = Math.floor(damage * 0.9);
                }
            }
        },
        "攻击法伤结果": function (fight_data, src_unit, target_unit, damage) {
            if (src_unit["法术状态"]["毒"] && src_unit["法术状态"]["毒"]["超级毒"]) {
                let type = src_unit["法术状态"]["毒"]["超级毒"];
                //降法伤
                if (type === 3) {
                    damage = Math.floor(damage * 0.9);
                }
            }
        },
        "被攻击物伤结果": function (fight_data, src_unit, target_unit, damage) {
            if (target_unit["法术状态"]["毒"]["超级毒"]) {
                let type = target_unit["法术状态"]["毒"]["超级毒"];
                //减防御
                if (type === 2) {
                    damage = Math.floor(damage * 1.1);
                }
            }
        },
        "被攻击法伤结果": function (fight_data, src_unit, target_unit, damage) {
            if (target_unit["法术状态"]["毒"]["超级毒"]) {
                let type = target_unit["法术状态"]["毒"]["超级毒"];
                // 减法防
                if (type === 4) {
                    damage = Math.floor(damage * 1.1);
                }
            }
        }
    },
    "自矜": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            let xs = 0.6;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "花刺")) {
                xs = 0.8;
            }
            if (target_unit["法术状态"] && target_unit["法术状态"]["毒"] && target_unit["门派"] === "女儿村") {
                xs = xs + 0.12;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "乘胜") && target_unit["气血"] <= target_unit["最大气血"] * 0.3) {
                xs = xs + 0.1;
            }
            damage = damage * xs;
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        }
    },

    "空灵": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["空灵"] = {};
            target_unit["法术状态"]["空灵"]["回合"] = 1;
        }
    },
    "淬芒": {
        "层数上限": 2,
        "刷新回合": 3,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 3, "层数": 1 };
        }
    },

    "雨落寒沙": {
        "技能类型": "固伤",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let sl = 2
            if (skill_level >= 150) {
                sl = 7;
            } else if (skill_level >= 125) {
                sl = 6;
            } else if (skill_level >= 100) {
                sl = 5;
            } else if (skill_level >= 75) {
                sl = 4;
            } else if (skill_level >= 50) {
                sl = 3;
            }
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["百花"] && G.RandomUtils.chance(9)) {
                sl = sl + 3;
            }
            return sl;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [10 * attack_number, "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let level = skill_level + 200;
            let mj = (src_unit["敏捷"] + src_unit["装备敏捷"]) * 0.6;
            if (fight_data["PK战斗"]) {
                mj = 0;
            }
            let xl_ratio = src_unit["法术修炼"] - target_unit["抗法修炼"];
            let aq = 0;
            if (src_unit["暗器"]) {
                aq = src_unit["暗器"];
            }
            let fl_ratio = 1 - target_list.length * 0.1;
            if (fl_ratio <= 0.6) {
                fl_ratio = 0.6;
            }
            let final_ratio = 1;
            if (src_unit["固伤加成"]) {
                final_ratio = src_unit["固伤加成"];
            }
            let damage = (level + aq + mj + src_unit["固定伤害"]) * fl_ratio * final_ratio * (1 + xl_ratio * 0.05) + xl_ratio * 5 + level;
            if (index === 0) {
                damage += src_unit["装备伤害"] * 0.5;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "暗伤")) {
                damage += src_unit["装备伤害"] * 0.18;
            }
            if (src_unit["凤舞九天"]) {
                damage += src_unit["凤舞九天"];
            }
            if (fight_data["PK战斗"]) {
                return Math.floor(damage * 0.5);
            }
            return Math.floor(damage);
        }

    },
    "子母神针": {
        "技能类型": "固伤",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 2
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [[35, 30], "魔法和愤怒"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 611;
            let level = skill_level * 3 + 50;
            let mj = (src_unit["敏捷"] + src_unit["装备敏捷"]) * 0.6;
            if (fight_data["PK战斗"]) {
                mj = 0;
            }
            let xl_ratio = src_unit["法术修炼"] - target_unit["抗法修炼"];
            let aq = 0;
            if (src_unit["暗器"]) {
                aq = src_unit["暗器"];
            }
            let fl_ratio = 1 - target_list.length * 0.1;
            if (fl_ratio <= 0.6) {
                fl_ratio = 0.6;
            }
            let final_ratio = 1;
            if (src_unit["固伤加成"]) {
                final_ratio = src_unit["固伤加成"]
            }
            let damage = (level + aq + mj + src_unit["固定伤害"]) * fl_ratio * final_ratio * (1 + xl_ratio * 0.02) + xl_ratio * 5 + level;
            if (index === 1) {
                damage += src_unit["装备伤害"] * 0.5;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "暗伤")) {
                damage += src_unit["装备伤害"] * 0.18;
            }
            if (src_unit["凤舞九天"]) {
                damage += src_unit["凤舞九天"];
            }
            if (fight_data["PK战斗"]) {
                return Math.floor(damage * 0.5);
            }
            return Math.floor(damage);
        }
    },
    "鸿渐于陆": {
        "技能类型": "固伤",
        "冷却回合": function (fight_unit) { return 4 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let xl_ratio = src_unit["法术修炼"] - target_unit["抗法修炼"];
            let aq = 0;
            if (src_unit["暗器"]) {
                aq = src_unit["暗器"];
            }
            let final_ratio = 1;
            if (src_unit["固伤加成"]) {
                final_ratio = src_unit["固伤加成"];
            }
            let damage = (skill_level + aq + src_unit["固定伤害"]) * final_ratio * (1 + xl_ratio * 0.02) + xl_ratio * 5 + skill_level;
            damage += src_unit["装备伤害"] * 1.3;
            if (G.FightSealSkillUtils.get_unit_fengyin_success(fight_data, "毒", src_unit["等级"], src_unit, target_unit)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "毒", src_unit["等级"]);
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "淬芒")) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "淬芒", 69);
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "天香")) {
                    G.FightUnitUtils.add_fen_nu(src_unit, 5);
                }
            }
            return Math.floor(damage);
        }
    },
    "莲步轻舞": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 2
            if (skill_level >= 125) {
                hh = 6;
            } else if (skill_level >= 100) {
                hh = 5;
            } else if (skill_level >= 75) {
                hh = 4;
            } else if (skill_level >= 45) {
                hh = 3;
            }
            return { "回合": hh };
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["宁心"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "莲步轻舞", skill_level);
            }
        }
    },
    "如花解语": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [35, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 2
            if (skill_level >= 125) {
                hh = 7;
            } else if (skill_level >= 100) {
                hh = 6;
            } else if (skill_level >= 75) {
                hh = 5;
            } else if (skill_level >= 45) {
                hh = 4;
            } else if (skill_level >= 25) {
                hh = 3;
            }
            return { "回合": hh };
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["宁心"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "如花解语", skill_level);
            }
        }
    },
    "似玉生香": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 1;
            if (skill_level >= 125) {
                hh = 6;
            } else if (skill_level >= 100) {
                hh = 5;
            } else if (skill_level >= 75) {
                hh = 4;
            } else if (skill_level >= 45) {
                hh = 3;
            } else if (skill_level >= 25) {
                hh = 2;
            }
            if (fight_unit["奇经八脉"] && fight_unit["奇经八脉"]["嫣然"]) {
                hh = hh + 1
            }
            return { "回合": hh };
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["宁心"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "似玉生香", skill_level);
            }
        }
    },
    "碎玉弄影": {
        "技能类型": "单封",
        "冷却回合": function (fight_unit) { return 5 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "愤怒"];
        },
        "抵抗等级": function (fight_data, src_unit, target_unit, skill_level, dk_level) {
            if (src_unit["门派"] === "女儿村" || src_unit["门派"] === "盘丝洞") {
                return dk_level * 2;
            }
        }
    },
    "娉婷袅娜": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 2
            if (skill_level >= 125) {
                hh = 7;
            } else if (skill_level >= 100) {
                hh = 6;
            } else if (skill_level >= 75) {
                hh = 5;
            } else if (skill_level >= 45) {
                hh = 4;
            }
            return { "回合": hh };
        },
        "命中几率": function (fight_data, src_unit, target_unit, skill_level, mzjl) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "抑怒")) {
                return mzjl + 10;
            }
        }
    },
    "月下霓裳": {
        "技能类型": "单封",
        "冷却回合": function (fight_unit) { return 6 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "金鸦火羽（高级）"];
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (G.RandomUtils.chance(85)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "月下霓裳", skill_level);
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["月下霓裳"] = {};
            target_unit["法术状态"]["月下霓裳"]["回合"] = 4;
        }
    },
    "百毒不侵": {
        "技能类型": "恢复",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [60, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 6;
            if (skill_level >= 160) {
                hh = 10
            } else if (skill_level >= 120) {
                hh = 9;
            } else if (skill_level >= 80) {
                hh = 8;
            } else if (skill_level >= 40) {
                hh = 7;
            }
            return { "回合": hh };
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.relieve_status(fight_data, target_unit, ["尸腐毒", "毒", "雾杀"]);
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "百毒不侵", skill_level);
        }
    },
    "葬玉焚花": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 4
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [20 * attack_number, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 0.94;
            let lj_number = 1;
            let cf_number = 1;
            let cfts = false;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "花落")) {
                start_damage = 1;
            }
            if (src_unit["法术状态"]["自矜"] && src_unit["奇经八脉"] && src_unit["奇经八脉"]["当前流派"] === "花间美人") {
                lj_number = 8;
                cf_number = 2;
                cfts = true;
            }
            return { "返回": false, "重复次数": cf_number, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": cfts, "连击次数": lj_number };
        },
        "物理连击触发": function (fight_data, src_unit, target_unit, target_list, attack_number) {
            if (attack_number === 1) {
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["战斗法术"] = "葬玉焚花";
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["寄存目标"] = target_list.map(e => e["编号"]);
            }
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            if (src_unit["法术状态"]["自矜"]) {
                G.FightStatusUtils.canel_unit_status(fight_data, "自矜", src_unit);
            } else {
                let gl = 40;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "汹涌")) {
                    gl = 55;
                }
                if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "曼陀罗")) {
                    gl = gl + G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "曼陀罗") + 5;
                }
                if (G.RandomUtils.chance(gl)) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "自矜", 69);
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "怒放")) {
                        G.FightUnitUtils.add_fen_nu(src_unit, 6);
                    }
                }
            }
        }
    },
    "飞花摘叶": {
        "技能类型": "固伤",
        "冷却回合": function (fight_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "女儿村", "飞花")) {
                return 8;
            }
        },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let sl = 3;
            if (skill_level >= 150) {
                sl = 4;
            }
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["花殇"]) {
                sl = sl + 6
            }
            return sl;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [60, "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let mj = (src_unit["敏捷"] + src_unit["装备敏捷"]) * 0.6
            let aq = 0;
            if (src_unit["暗器"]) {
                aq = src_unit["暗器"];
            }
            let fl_ratio = 1.1 - target_list.length * 0.1;
            if (fl_ratio <= 0.6) {
                fl_ratio = 0.6
            }
            let final_ratio = 1;
            if (src_unit["固伤加成"]) {
                final_ratio = src_unit["固伤加成"];
            }
            let xl_ratio = src_unit["法术修炼"] - target_unit["抗法修炼"];
            let damage = (skill_level + aq + mj + src_unit["固定伤害"]) * fl_ratio * final_ratio * (1 + xl_ratio * 0.02) + xl_ratio * 5 + skill_level;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "飞花")) {
                G.FightUnitUtils.remove_unit_mp(target_unit, skill_level * 2);
            } else {
                G.FightUnitUtils.remove_unit_mp(target_unit, skill_level);
            }
            if (fight_data["PK战斗"]) {
                return Math.floor(damage * 0.5);
            }
            return Math.floor(damage / 5);
        },
        "固伤攻击前触发": function (fight_data, src_unit, target_unit, skill_level) {
            let friends = G.FightUtils.get_friend_team_group_characters_unit(fight_data, src_unit, 5);
            let mp = Math.floor(skill_level / 2);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "飞花")) {
                mp = mp * 2;
            }
            for (let index = 0; index < friends.length; index++) {
                G.FightUnitUtils.add_unit_mp(friends[index], mp);
            }
        }
    },

    //                    天宫                    //
    "天眼神通": {
        "技能类型": "增益",
        "冷却回合": function (fight_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "凌波城", "凝息")) {
                return 7;
            }
            return 8;
        },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [300, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["天眼神通"] = {};
            target_unit["法术状态"]["天眼神通"]["回合"] = 1;
            target_unit["法术状态"]["天眼神通"]["物理伤害结算"] = status_level + 15;
            if (src_unit["奇经八脉"]["当前流派"] === "风云战将") {
                if (!G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "盛势") || G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "天眼")) {
                    if (G.RandomUtils.custom_chance(210, 30)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "天眼", 69, 6);
                    } else if (G.RandomUtils.custom_chance(210, 60)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "智眼", 69, 6);

                    } else if (G.RandomUtils.custom_chance(210, 90)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "怒眼", 69, 6);
                    } else if (G.RandomUtils.custom_chance(210, 120)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "天眼", 69, 6);
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "怒眼", 69, 6);
                    } else if (G.RandomUtils.custom_chance(210, 150)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "天眼", 69, 6);
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "智眼", 69, 6);
                    } else if (G.RandomUtils.custom_chance(210, 180)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "智眼", 69, 6);
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "怒眼", 69, 6);
                    } else {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "智眼", 69, 6);
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "怒眼", 69, 6);
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "天眼", 69, 6);
                    }

                } else if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "天眼")) {
                    if (G.RandomUtils.custom_chance(210, 25)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "天眼", 69, 6);
                    } else if (G.RandomUtils.custom_chance(210, 50)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "智眼", 69, 6);
                    } else if (G.RandomUtils.custom_chance(210, 75)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "怒眼", 69, 6);
                    } else if (G.RandomUtils.custom_chance(210, 100)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "天眼", 69, 6);
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "怒眼", 69, 6);
                    } else if (G.RandomUtils.custom_chance(210, 125)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "天眼", 69, 6);
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "智眼", 69, 6);
                    } else if (G.RandomUtils.custom_chance(210, 150)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "智眼", 69, 6);
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "怒眼", 69, 6);
                    } else {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "智眼", 69, 6);
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "怒眼", 69, 6);
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "天眼", 69, 6);
                    }
                } else if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "盛势")) {
                    if (G.RandomUtils.custom_chance(265, 30)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "天眼", 69, 6);
                    } else if (G.RandomUtils.custom_chance(265, 60)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "智眼", 69, 6);
                    } else if (G.RandomUtils.custom_chance(265, 90)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "怒眼", 69, 6);
                    } else if (G.RandomUtils.custom_chance(265, 135)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "天眼", 69, 6);
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "怒眼", 69, 6);
                    } else if (G.RandomUtils.custom_chance(265, 175)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "天眼", 69, 6);
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "智眼", 69, 6);
                    } else if (G.RandomUtils.custom_chance(265, 220)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "智眼", 69, 6);
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "怒眼", 69, 6);
                    } else {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "智眼", 69, 6);
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "怒眼", 69, 6);
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "天眼", 69, 6);
                    }
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "蓄势") && G.RandomUtils.chance(50)) {
                G.FightUnitUtils.add_zhan_yi(src_unit, 1);
            }
        }
    },
    "耳目一新": {
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 24 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [300, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["耳目一新"] = {};
            target_unit["法术状态"]["耳目一新"]["回合"] = 1;
        }
    },
    "天眼": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["天眼"] = {};
            target_unit["法术状态"]["天眼"]["回合"] = 6;
            target_unit["法术状态"]["天眼"]["加必杀"] = 20;
        },
        "死亡触发": function (fight_data, src_unit, target_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "杀罚") && target_unit["法术状态"]["腾雷"]) {
                G.FightStatusUtils.add_unit_status(fight_data, target_unit, target_unit, "腾雷", 11);
            }
        }
    },
    "怒眼": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["怒眼"] = {};
            target_unit["法术状态"]["怒眼"]["回合"] = 6;
            target_unit["法术状态"]["怒眼"]["物理伤害结算"] = status_level + 15;
        },
        "死亡触发": function (fight_data, src_unit, target_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "杀罚") && target_unit["法术状态"]["腾雷"]) {
                G.FightStatusUtils.add_unit_status(fight_data, target_unit, target_unit, "腾雷", 11);
            }
        }
    },
    "智眼": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["智眼"] = {};
            target_unit["法术状态"]["智眼"]["回合"] = 6;
            if (G.RandomUtils.chance(50)) {
                G.FightUnitUtils.add_zhan_yi(src_unit, 1);
            }
        },
        "死亡触发": function (fight_data, src_unit, target_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "杀罚") && target_unit["法术状态"]["腾雷"]) {
                G.FightStatusUtils.add_unit_status(fight_data, target_unit, target_unit, "腾雷", 11);
            }
        }
    },
    "电光火石": {
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 9 },
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [140, "魔法"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"]) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "霹雳弦惊", 11, 1);
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "雷怒霆激", 11, 1);
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"].push({ "编号": src_unit["编号"], "特效": ["电光火石"] });
            }
        }
    },
    "霹雳弦惊": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [70, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            if (target_unit["法术状态"]["霹雳弦惊"]) {
                if (target_unit["法术状态"]["霹雳弦惊"]["层数"] && target_unit["法术状态"]["霹雳弦惊"]["层数"] < 20) {
                    target_unit["法术状态"]["霹雳弦惊"]["层数"] += 1;
                }
                if (target_unit["法术状态"]["霹雳弦惊"]["激越"]) {
                    target_unit["法术状态"]["霹雳弦惊"]["回合"] = 4;
                } else {
                    target_unit["法术状态"]["霹雳弦惊"]["回合"] = 6;
                }
                return false;
            }
            src_unit["法术状态"]["霹雳弦惊"] = {};
            let hh = 6;
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["激越"]) {
                hh = 4;
                src_unit["法术状态"]["霹雳弦惊"]["激越"] = 1;
            }
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["气势"]) {
                if (target_unit["霹雳弦惊"] === null) {
                    hh = Math.floor(hh * 1.5);
                    target_unit["霹雳弦惊"] = 1;
                }
            }
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["啸傲"]) {
                src_unit["法术状态"]["霹雳弦惊"]["层数"] = 1;
            }
            src_unit["法术状态"]["霹雳弦惊"]["回合"] = hh;
            if (target_unit["法术状态"]["雷怒霆激"] && custom_data === undefined) {
                G.FightStatusUtils.canel_unit_status(fight_data, "雷怒霆激", target_unit);
            }

        }
    },
    "雷怒霆激": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [70, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            if (target_unit["法术状态"]["雷怒霆激"]) {
                if (target_unit["法术状态"]["雷怒霆激"]["层数"] && target_unit["法术状态"]["雷怒霆激"]["层数"] < 20) {
                    target_unit["法术状态"]["雷怒霆激"]["层数"] += 1;
                }
                if (target_unit["法术状态"]["雷怒霆激"]["激越"]) {
                    target_unit["法术状态"]["雷怒霆激"]["回合"] = 4;
                } else {
                    target_unit["法术状态"]["雷怒霆激"]["回合"] = 6;
                }
                return false;
            }
            src_unit["法术状态"]["雷怒霆激"] = {};
            let hh = 6;
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["激越"]) {
                hh = 4;
                src_unit["法术状态"]["雷怒霆激"]["激越"] = 1
            }
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["气势"]) {
                if (target_unit["雷怒霆激"] === null) {
                    hh = Math.floor(hh * 1.5);
                    target_unit["雷怒霆激"] = 1;
                }
            }
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["啸傲"]) {
                src_unit["法术状态"]["雷怒霆激"]["层数"] = 1;
            }
            src_unit["法术状态"]["雷怒霆激"]["回合"] = hh;
            if (target_unit["法术状态"]["霹雳弦惊"]) {
                G.FightStatusUtils.canel_unit_status(fight_data, "霹雳弦惊", target_unit);
            }
        }
    },
    "天神护体": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 3;
            if (skill_level >= 160) {
                hh = 12;
            } else if (skill_level >= 120) {
                hh = 12;
            } else if (skill_level >= 80) {
                hh = 12;
            } else if (skill_level >= 40) {
                hh = 12;
            }
            let 法伤1 = Math.floor(skill_level * 1.5)
            let 法防1 = Math.floor(skill_level * 1.5)
            let 速度1 = 0
            let 防御1 = 0
            if (fight_unit["奇经八脉"] && fight_unit["奇经八脉"]["神律"]) {
                法伤1 = 0
                法防1 = Math.floor(target_unit["法防"] * 2)
                速度1 = Math.floor(skill_level * 0.3)
            } else if (fight_unit["奇经八脉"] && fight_unit["奇经八脉"]["神尊"]) {
                法伤1 = 0
                防御1 = Math.floor(skill_level * 1.5)
            }
            return { "回合": hh, "法伤": 法伤1, "防御": 防御1, "速度": 速度1, "法防": 法防1 };
        }
    },
    "威仪九霄": {
        "技能类型": "物理",
        "冷却回合": function (fight_unit) { return 6 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * fight_unit["法术状态"]["威仪九霄"]["层数"], "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "层数": 1 };
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 0.1 * (1 + 0.03) ^ src_unit["法术状态"]["威仪九霄"]["层数"];
            src_unit["法术状态"]["威仪九霄"]["层数"] = 0;
            return { "返回": true, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": true, "连击次数": 1 };
        },
        "回合开始前": function (fight_data, fight_unit) {
            if (fight_unit["法术状态"]["威仪九霄"] && fight_unit["法术状态"]["威仪九霄"]["层数"] < 30) {
                fight_unit["法术状态"]["威仪九霄"]["层数"] += 1;
            }
        }
    },
    "轰鸣": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 3, "防御": Math.floor(skill_level * 1.6) };
        }
    },
    "电芒": {
        "技能类型": "法术",
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            if (src_unit["法术状态"]["电芒"] && custom_data) {
                target_unit["法术状态"]["电芒"]["回合"] = custom_data;
                return false;
            } else {
                src_unit["法术状态"]["电芒"] = {};
                src_unit["法术状态"]["电芒"]["回合"] = 1;
            }
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["雷波"]) {
                target_unit["法术状态"]["电芒"]["雷波"] = 1;
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1 - target_list.length * 0.1
            if (fl_ratio <= 0.4) {
                fl_ratio = 0.4
            }
            return [Math.floor(damage * fl_ratio)];
        },
        "死亡触发": function (fight_data, src_unit, target_unit) {
            // 死亡后对敌人添加电芒法术状态
            if (target_unit["法术状态"]["电芒"]["雷波"]) {
                let number = target_unit["法术状态"]["电芒"]["攻击编号"];
                let tmp_unit = G.FightUtils.get_fight_unit_by_number(fight_data, number);
                let target_list = G.FightUtils.get_enemy_team_group_survive_unit(fight_data, src_unit, tmp_unit, 15);
                for (let index = 0; index < target_list.length; index++) {
                    let target = target_list[index];
                    if (target["法术状态"]["电芒"] === undefined) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "电芒", 69, 3);
                    }
                }
            }
        }
    },
    "怒火": {
        "技能类型": "法术",
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1 - target_list.length * 0.1;
            if (fl_ratio <= 0.4) {
                fl_ratio = 0.4
            }
            return [Math.floor(damage * fl_ratio)];
        },
        "攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * 1.32;
        }
    },
    "阎罗拘魂": {
        "技能类型": "法术",
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 20 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1 - target_list.length * 0.1;
            if (fl_ratio <= 0.4) {
                fl_ratio = 0.4;
            }
            return [Math.floor(damage * fl_ratio)];
        },
        "扣血触发": function (fight_data, src_unit, target_unit, remove_hp) {
            let remove_max_hp = Math.floor(remove_hp / 0.3);
            G.FightUnitUtils.remove_unit_hp_max(fight_data, src_unit, target_unit, remove_max_hp);
        }
    },
    "趁虚": {
        "刷新回合": 3,
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["趁虚"] = {};
            target_unit["法术状态"]["趁虚"]["回合"] = 3;
        }
    },
    "存雄": {
        "刷新回合": 3,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 3, "伤害": Math.floor(target_unit["伤害"] * 0.1) };
        }
    },
    "怒电": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },

    "五雷轰顶": {
        "技能类型": "固伤",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let damage = target_unit["气血"] * 0.05;
            if (G.RandomUtils.chance(50)) {
                damage = target_unit["最大气血"] * 0.25;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "威吓")) {
                damage = damage * 1.08;
                target_unit["威吓"] = 1;
            }
            if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "伏魔天书")) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "伏魔")) {
                    damage += Math.floor(G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "伏魔天书") / 2 * G.RandomUtils.generate_random(20, 30) * 1.5);
                } else {
                    damage += Math.floor(G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "伏魔天书") / 2 * G.RandomUtils.generate_random(20, 30));
                }
            }
            if (damage >= src_unit["等级"] * 50) {
                damage = src_unit["等级"] * 50;
            }
            return Math.floor(damage);
        }
    },
    "雷霆万钧": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let target_count = 3;
            if (src_unit["法术状态"]["怒电"]) {
                target_count = 4;
                G.FightStatusUtils.canel_unit_status(fight_data, "怒电", src_unit);
            }
            return target_count;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [35 * attack_number, "魔法"];
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            if (src_unit["法术状态"]["天雷灌注"] && !G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "雷霆汹涌")) {
                src_unit["法术状态"]["天雷灌注"]["层数"] -= 1;
                damage_ratio = damage_ratio * 1.25;
                if (src_unit["法术状态"]["天雷灌注"]["层数"] <= 0) {
                    G.FightStatusUtils.canel_unit_status(fight_data, "天雷灌注", src_unit);
                }
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            if (src_unit["招式特效"]["雷霆万钧"]) {
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205
            }
            let damage = skill_level * 2.4 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("龙宫", target_list.length, skill_level);
            damage = damage * fl_ratio;
            if (target_unit["法术状态"]["电芒"]) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "惊曜")) {
                    damage = damage * 1.1;
                } else {
                    damage = damage * 1.08;
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "震荡") && target_unit["法术状态"]["电芒"]["攻击目标"] === src_unit["编号"]) {
                    damage += 80;
                    if (_SystemHourData["天气"] === 3) {
                        damage = damage * 1.05;
                    }
                }
            }
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "电芒")) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "频变")) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "电芒", 11, 4);
                } else {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "电芒", 11, 3);
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "电掣") && target_unit["类型"] === "bb") {
                damage = damage * 1.15;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "雷波") && target_index === 0) {
                damage = damage * 1.08;
            }
            if (src_unit["天雷地火"]) {
                damage += src_unit["damage"];
            }
            if (G.FightUnitUtils.check_unit_shen_qi_skill(src_unit, "裂帛") && target_index === 0) {
                damage = damage * (1 + 0.08 * src_unit["神器"]["等级"]);
            }
            return [Math.floor(damage)];
        }
    },
    "雷霆汹涌": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let target_count = 3;
            if (src_unit["法术状态"]["天雷灌注"]) {
                src_unit["法术状态"]["天雷灌注"]["层数"] -= 1;
                target_count = 6
                if (src_unit["法术状态"]["天雷灌注"]["层数"] <= 0) {
                    G.FightStatusUtils.canel_unit_status(fight_data, "天雷灌注", src_unit);
                }
            }
            return target_count;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [35 * attack_number, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 2.4 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("龙宫", target_list.length, skill_level);
            damage = damage * fl_ratio;
            if (target_unit["法术状态"]["电芒"]) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "惊曜")) {
                    damage = damage * 1.1;
                } else {
                    damage = damage * 1.08;
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "震荡") && target_unit["法术状态"]["电芒"]["攻击目标"] === src_unit["编号"]) {
                    damage += 80;
                    if (_SystemHourData["天气"] === 3) {
                        damage = damage * 1.05;
                    }
                }
            }
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "电芒")) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "频变")) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "电芒", 11, 4);
                } else {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "电芒", 11, 3);
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "电掣") && target_unit["类型"] === "bb") {
                damage = damage * 1.15;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "雷波") && target_index === 0) {
                damage = damage * 1.08;
            }
            if (src_unit["天雷地火"]) {
                damage = damage + src_unit["天雷地火"];
            }
            if (G.FightUnitUtils.check_unit_shen_qi_skill(src_unit, "裂帛") && target_index === 0) {
                damage = damage * (1 + 0.08 * src_unit["神器"]["等级"]);
            }
            return [Math.floor(damage)];
        }
    },
    "风雷韵动": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [[60, 10], "魔法和愤怒"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 2.4 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit)
            let fl_ratio = 1.1;
            damage = damage * fl_ratio;
            if (target_unit["法术状态"]["电芒"]) {
                damage = damage * 1.08;
                if (fight_data["PK战斗"]) {
                    damage = damage * 1.4;
                } else {
                    damage = damage * 1.8;
                }
            }
            if (G.FightUnitUtils.check_unit_shen_qi_skill(src_unit, "裂帛") && target_index === 0) {
                damage = damage * (1 + 0.08 * src_unit["神器"]["等级"]);
            }
            return [Math.floor(damage)];
        }
    },
    "天雷斩": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (fight_data["PK战斗"]) {
                return 1;
            }
            if (skill_level >= 60) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let data = Math.floor(skill_level / 2)
            if (fight_unit["天雷斩"] === null) {
                fight_unit["天雷斩"] = 1
                fight_unit["防御"] = fight_unit["防御"] - Math.floor(skill_level / 2)
            }
            return { "回合": 999, "法伤": data, "法防": data };
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 0.95, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            let lssh = 0
            if (src_unit["天雷地火"]) {
                lssh = lssh + src_unit["天雷地火"]
            }
            if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "伏魔天书")) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "伏魔")) {
                    lssh = lssh + Math.floor(G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "伏魔天书") / 2 * G.RandomUtils.generate_random(20, 30) * 1.5)
                } else {
                    lssh = lssh + Math.floor(G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "伏魔天书") / 2 * G.RandomUtils.generate_random(20, 30))
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "疾雷") && !fight_data["PK战斗"]) {
                lssh = lssh + (src_unit["敏捷"] - src_unit["等级"]) * 0.6
            }
            damage += lssh;
            if (target_unit["法术状态"]["天雷斩"] === undefined) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "天雷斩", G.FightUnitUtils.get_unit_skill_level(src_unit, "天雷斩"));
            }
            if (G.FightUnitUtils.check_unit_shen_qi_skill(src_unit, "裂帛") && attack_number === 1) {
                damage = damage * (1 + 0.08 * src_unit["神器"]["等级"]);
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        }
    },
    "风雷斩": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (src_unit["法术状态"]["雷怒霆激"] && src_unit["法术状态"]["霹雳弦惊"]) {
                return 3;
            }
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "物攻前触发": function (fight_data, src_unit, skill_name) {
            if (src_unit["类型"] === "角色") {
                if (src_unit["法术状态"]["雷怒霆激"] && src_unit["法术状态"]["霹雳弦惊"]) {
                } else if (src_unit["法术状态"]["雷怒霆激"]) {
                    skill_name = "风雷斩·飞霆";
                } else if (src_unit["法术状态"]["霹雳弦惊"]) {
                    skill_name = "风雷斩·霹雳";
                }
            }
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 0.95, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            let lssh = 0;
            if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "伏魔天书")) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "伏魔")) {
                    lssh = lssh + Math.floor(G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "伏魔天书") / 2 * G.RandomUtils.generate_random(20, 30) * 1.5)
                } else {
                    lssh = lssh + Math.floor(G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "伏魔天书") / 2 * G.RandomUtils.generate_random(20, 30))
                }
            }
            if (src_unit["法术状态"]["雷怒霆激"] && src_unit["法术状态"]["霹雳弦惊"] && attack_number === 1) {
                damage = damage * 1.35;
            }
            damage += lssh;
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        }
    },
    "风雷斩·飞霆": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (src_unit["法术状态"]["天雷灌注"]) { //这里用了会取消吗
                return 6;
            }
            return 3;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": true, "重复次数": 1, "起始伤害": 0.95, "叠加伤害": 0, "重复提示": true, "连击次数": 1 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            let lssh = 0;
            if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "伏魔天书")) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "伏魔")) {
                    lssh = lssh + Math.floor(G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "伏魔天书") / 2 * G.RandomUtils.generate_random(20, 30) * 1.5)
                } else {
                    lssh = lssh + Math.floor(G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "伏魔天书") / 2 * G.RandomUtils.generate_random(20, 30))
                }
            }
            damage += lssh;
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        }
    },
    "风雷斩·霹雳": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let lj_number = 1;
            if (src_unit["法术状态"]["天雷灌注"] && G.RandomUtils.chance(65)) {
                lj_number = 2;
            }
            return { "返回": false, "重复次数": 1, "起始伤害": 1.35, "叠加伤害": 0, "重复提示": false, "连击次数": lj_number };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            let lssh = 0;
            if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "伏魔天书")) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "伏魔")) {
                    lssh = lssh + Math.floor(G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "伏魔天书") / 2 * G.RandomUtils.generate_random(20, 30) * 1.5)
                } else {
                    lssh = lssh + Math.floor(G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "伏魔天书") / 2 * G.RandomUtils.generate_random(20, 30))
                }
            }
            damage += lssh;
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        }
    },
    "鸣雷诀": {
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 6 },
        "指定对象": "自己",
        "不可驱散": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "金鸦火羽（高级）"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["鸣雷诀"] = {};
            target_unit["法术状态"]["鸣雷诀"]["回合"] = 3;
        }
    },
    "宁心": {
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.sects_fengyin_ap["女儿村"]);
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "宁心", skill_level);
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["宁心"] = {};
            target_unit["法术状态"]["宁心"]["回合"] = 4;
        }
    },
    "知己知彼": {
        "刷新回合": 3,
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [80, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 3, "伤害": skill_level * 2, "防御": skill_level * 2, "法伤": skill_level * 2, "法防": skill_level * 2 };
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["愤怒"] === undefined) {
                target_unit["愤怒"] = 0;
            }
            if (target_unit["魔法"] === undefined) {
                target_unit["魔法"] = 0;
            }
            G.FightUtils.add_fight_prompt(fight_data, src_unit, target_unit, `侦查成功，#Y${target_unit["名称"]} #W当前剩余的\n气血 :#G${target_unit["气血"]}#W\n魔法 :#S${target_unit["魔法"]}\n愤怒 :#Y${target_unit["愤怒"]}`);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "洞察")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "知己知彼", skill_level);
            }
        }
    },
    "画地为牢": {
        "技能类型": "减益",
        "冷却回合": function (fight_unit) { return 5 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 5 };
        }
    },
    "镇妖": {
        "技能类型": "群封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (src_unit["缭乱"] && G.RandomUtils.chance(30)) {
                src_unit["缭乱"] = undefined;
                return 2;
            }
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 4;
            if (skill_level >= 125) {
                hh = 7;
            } else if (skill_level >= 100) {
                hh = 6;
            } else if (skill_level >= 75) {
                hh = 5;
            }
            return { "回合": hh };
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["复苏"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "镇妖", skill_level);
            }
        }
    },
    "错乱": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 2
            if (skill_level >= 125) {
                hh = 4;
            } else if (skill_level >= 100) {
                hh = 3;
            } else if (skill_level >= 75) {
                hh = 3;
            } else if (skill_level >= 45) {
                hh = 2;
            }
            return { "回合": hh };
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "缭乱")) {
                if (G.RandomUtils.chance(30)) {
                    src_unit["缭乱"] = 1;
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "震慑")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "掌心雷", 11);
            }
            if (target_unit["法术状态"]["复苏"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "错乱", skill_level);
            }
        },
        "行动前触发": function (fight_data, fight_unit) {
            // 疯狂优先生效
            if (fight_unit["法术状态"]["疯狂"] === undefined && fight_unit["指令"]["类型"] !== "防御" && fight_unit["指令"]["类型"] !== "道具") {
                fight_unit["指令"]["类型"] = "攻击";
                let target = G.FightUtils.get_enemy_team_single_survive_unit(fight_data, fight_unit);
                fight_unit["指令"]["目标"] = target !== undefined ? target["编号"] : undefined;
            }
        }
    },
    "掌心雷": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["藏招"]) {
                return 2;
            }
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 4;
            if (skill_level >= 125) {
                hh = 7;
            } else if (skill_level >= 100) {
                hh = 6;
            } else if (skill_level >= 75) {
                hh = 5;
            }
            return { "回合": hh, "防御": Math.floor(skill_level * 1.6) };
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            return false;
            if (target_unit["法术状态"]["复苏"]) {
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "掌心雷", skill_level);
            }
        }
    },
    "百万神兵": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [60, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 2
            if (skill_level >= 125) {
                hh = 7;
            } else if (skill_level >= 100) {
                hh = 6;
            } else if (skill_level >= 75) {
                hh = 5;
            } else if (skill_level >= 45) {
                hh = 4;
            } else if (skill_level >= 25) {
                hh = 3;
            }
            return { "回合": hh };
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["复苏"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "百万神兵", skill_level);
            }
        }
    },
    "金刚镯": {
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 3;
            if (skill_level >= 150) {
                hh = 4;
            }
            let damage = Math.floor(skill_level * 3)
            if (fight_unit["奇经八脉"] && fight_unit["奇经八脉"]["套索"]) {
                damage += Math.floor(target_unit["伤害"] * 0.1)
                hh = hh + 1
            }
            return { "回合": hh, "伤害": damage };
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (G.RandomUtils.chance(40)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "金刚镯", skill_level);
            }
        }
    },
    "天雷灌注": {
        "技能类型": "增益",
        "指定对象": "自己",
        "不可驱散": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["气血"] > fight_unit["最大气血"] * 0.25) {
                return [100, "魔法和气血"];
            }
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"]) {
                let hp = Math.floor(src_unit["最大气血"] * 0.25);
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾死亡"] = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, src_unit, hp, "天雷灌注");
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾气血"] = hp;
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            if (target_unit["法术状态"]["天雷灌注"] && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "天劫") && target_unit["法术状态"]["天雷灌注"]["层数"] < 3) {
                target_unit["法术状态"]["天雷灌注"]["层数"] += 1;
                return false;
            }
            src_unit["法术状态"]["天雷灌注"] = {};
            src_unit["法术状态"]["天雷灌注"]["回合"] = 999;
            target_unit["法术状态"]["天雷灌注"]["层数"] = 1;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "雷吞")) {
                if (src_unit["装备"][2] && src_unit["装备"][2]["五行"] === "金") {
                    target_unit["法术状态"]["天雷灌注"]["层数"] = 2;
                }
                if (src_unit["装备"][3] && src_unit["装备"][3]["五行"] === "金") {
                    target_unit["法术状态"]["天雷灌注"]["层数"] = 3;
                }
            }
        }
    },
    //                    普陀山                    //
    "普渡众生": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let target_count = 1;
            if (G.FightUnitUtils.check_unit_fa_bao(src_unit, "普渡")) {
                let gl = G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "普渡") * 2 + 30;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "普渡")) {
                    gl = gl + 30;
                }
                if (G.RandomUtils.chance(gl)) {
                    target_count = 2
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "度厄")) {
                        if (G.FightUtils.get_friend_ap_status_count(fight_data, src_unit, "炼魂")[1] === 0) {
                            target_count = 3;
                        }
                    }
                }
            }
            return target_count;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["普渡众生"] === undefined) {
                let hp = skill_level * 4 + 100;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "劳心") && index === 0 && src_unit["最大气血"] >= src_unit["气血"] * 0.3) {
                    hp = hp * 2
                }
                hp = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "普渡众生", hp);
                G.FightUnitUtils.add_unit_hp(target_unit, data);
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = hp;
                return true;
            }
            return false;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            src_unit["法术状态"]["普渡众生"] = {};
            let hh = 4
            if (status_level >= 160) {
                hh = 10
            } else if (status_level >= 120) {
                hh = 8;
            } else if (status_level >= 80) {
                hh = 6;
            } else if (status_level >= 40) {
                hh = 4;
            }
            src_unit["法术状态"]["普渡众生"]["回合"] = custom_data ? custom_data : hh;
            target_unit["法术状态"]["普渡众生"]["等级"] = status_level;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "普照")) {
                target_unit["法术状态"]["普渡众生"]["普照"] = src_unit["编号"];
                src_unit["防御"] += 15;
                src_unit["法防"] += 15;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "慈佑") && target_unit["认证码"]) {
                target_unit["法术状态"]["普渡众生"]["慈佑"] = 1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "雨润") && target_unit["类型"] === "角色") {
                target_unit["法术状态"]["普渡众生"]["雨润"] = 1;
            }
            target_unit["法术状态"]["普渡众生"]["首回合"] = 1;
        },
        "取消状态": function (fight_data, fight_unit) {
            if (fight_unit["法术状态"]["普渡众生"]["普照"]) {
                let target_number = fight_unit["法术状态"]["普渡众生"]["普照"];
                let target = G.FightUtils.get_fight_unit_by_number(fight_data, target_number);
                target["防御"] -= 15;
                target["法防"] -= 15;
            }
        },
        "持续回血": function (fight_data, src_unit, target_unit, hp) {
            hp = Math.floor(hp + src_unit["治疗能力"] + src_unit["法术修炼"] * 1.3 + target_unit["气血回复效果"]);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "化戈")) {
                hp = Math.floor(hp + (src_unit["装备伤害"] * 0.18));
            }
            if (src_unit["玉帛"]) {
                hp = Math.floor(hp + (src_unit["玉帛"]));
            }
            if (src_unit["临时治疗"]) {
                hp += src_unit["临时治疗"];
                src_unit["临时治疗"] = undefined;
            }
            if (target_unit["气血上限"]) {
                target_unit["气血上限"] += hp;
                if (target_unit["气血上限"] > target_unit["最大气血"]) {
                    target_unit["气血上限"] = target_unit["最大气血"];
                }
            }
            return hp;
        },
        "行动前触发": function (fight_data, fight_unit) {
            // 行动前普渡众生持续回血
            let level = fight_unit["法术状态"]["普渡众生"]["等级"];
            let number = fight_unit["法术状态"]["普渡众生"]["攻击编号"];
            let add_unit = G.FightUtils.get_fight_unit_by_number(fight_data, number);
            if (fight_unit["法术状态"]["普渡众生"]["首回合"]) {
                fight_unit["法术状态"]["普渡众生"]["首回合"] = undefined;
            }
            G.FightComputingUtils.add_target_hp_by_ap_status(fight_data, add_unit, fight_unit, level * 4 + 22, "普渡众生");
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            if (target_unit["法术状态"]["普渡众生"]["慈佑"]) {
                damage = damage * (1 - 0.12);
            }
        }
    },
    "自在心法": {
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let data = 0;
            if (target_unit["法术状态"]["普渡众生"]) {
                data = Math.floor((target_unit["法术状态"]["普渡众生"]["等级"] * 3.2 + 50) * target_unit["法术状态"]["普渡众生"]["回合"])
                G.FightStatusUtils.canel_unit_status(fight_data, "普渡众生", target_unit);
            } else {
                data = Math.floor(skill_level * 1.5);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "道衍") && G.FightUtils.check_fight_unit_sects_is_single(fight_data, src_unit, "普陀山")) {
                let num = G.FightUtils.get_friend_ap_status_count(false, src_unit, "普渡众生")[0];
                if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["当前流派"] === "五行咒师") {
                    num = num + G.FightUtils.get_enemy_ap_status_count(src_unit, "紧箍咒")[0];
                }
                data += num * 0.06;
                if (_SystemHourData["天气"] === 2) {
                    data += num * 0.01;
                }
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "普渡众生", G.FightUnitUtils.get_unit_skill_level(src_unit, "普渡众生"), num);
            }
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "自在心法", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        }
    },
    "波澜不惊": {
        // TODO
        // 为目标吸收受到的前4次攻击的伤害，持续2回合；
        // 并且将吸收的伤害转化为目标的当前气血回复，最高可吸收（(普度众生首回合治疗量×2)点气血伤害。
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [60, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 2 }
        },
        "回合开始前": function (fight_data, fight_unit) {
            // 重置波澜不惊法术状态次数
            fight_unit["法术状态"]["波澜不惊"]["次数"] = 0;
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            if (target_unit["法术状态"]["波澜不惊"]["次数"] === undefined) {
                target_unit["法术状态"]["波澜不惊"]["次数"] = 0;
            }
            if (target_unit["法术状态"]["波澜不惊"] && target_unit["法术状态"]["波澜不惊"]["次数"] &&
                target_unit["法术状态"]["波澜不惊"]["次数"] < 4) {
                ["法术状态"]["波澜不惊"]["次数"] += 1;
                if (damage > (target_unit["法术状态"]["波澜不惊"]["等级"] * 2 + 150) * 2) {
                    damage = (target_unit["法术状态"]["波澜不惊"]["等级"] * 2 + 150) * 2;
                }
                return { "伤害": Math.floor(damage), "技能类型": 2, "特效": [] };
            }
        }
    },
    "莲花心音": {
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (target_unit["类型"] === "bb" && target_unit["特殊状态"]["鬼魂术"] && target_unit["气血"] <= 0) {
                return 1;
            } else {
                return 0;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [60, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            target_unit["死亡"] = undefined;
            G.FightStatusUtils.canel_unit_status(fight_data, "复活", target_unit);
            let data = Math.floor(target_unit["最大气血"] * 0.6);
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "莲花心音", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            target_unit["魔法"] = target_unit["最大魔法"] * 0.48;
            G.FightUnitUtils.sync_unit_mp(fight_data, target_unit);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["复活"] = true;
        }
    },
    "清静菩提": {
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 8 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "金鸦火羽（高级）"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"]) {
                if (fight_data["全局状态"]["清静菩提"]) {
                    fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["全屏"] = true;
                    fight_data["全局状态"]["清静菩提"]["回合"] = 4;
                    fight_data["全局状态"]["清静菩提"]["队伍"] = src_unit["队伍"];
                } else {
                    fight_data["全局状态"]["清静菩提"]["回合"] = 4;
                }
            }
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 1 }
        }
    },
    "灵动九天": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["法华"]) {
                return 1;
            }
            let target_count = 5;
            if (skill_level >= 140) {
                target_count = 6;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "感念")) {
                if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["当前流派"] === "莲台仙子") {
                    target_count += G.FightUtils.get_friend_ap_status_count(fight_data, src_unit, "普渡众生")[0];
                } else if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["当前流派"] === "五行咒师") {
                    target_count += G.FightUtils.get_enemy_ap_status_count(fight_data, src_unit, "紧箍咒")[0];
                }
            }
            return target_count;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 12;
            if (skill_level >= 160) {
                hh = 12;
            }
            let 法伤1 = Math.floor(skill_level)
            let 法防1 = Math.floor(skill_level)
            if (fight_unit["奇经八脉"] && fight_unit["奇经八脉"]["法华"]) {
                法伤1 = 法伤1 + 100
                法防1 = 0
            } else if (fight_unit["奇经八脉"] && fight_unit["奇经八脉"]["灵动"]) {
                法伤1 = 法伤1 + 30
                法防1 = 法防1 + 30
                hh = hh + 2
            }
            return { "回合": hh, "法伤": 法伤1, "法防": 法防1 };
        }
    },
    "尸腐无常": {
        "技能类型": "减益",
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let hp = G.RandomUtils.generate_random(1700, 2000);
            G.FightComputingUtils.remove_hp_js_and_play(fight_data, src_unit, target_unit, hp, "尸腐无常");
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "尸腐无常", src_unit["等级"]);
        },
        "取队友": function (fight_data, fight_unit, max_number, team_data) {
            let member_list = [];
            if (G.FightUnitUtils.get_target_unit_status(fight_unit, fight_unit, 1) && fight_unit["法术状态"]["尸腐无常"] === undefined) {
                member_list.push(fight_unit);
            }
            for (let index = 0; index < team_data.length; index++) {
                let element = team_data[index]
                if (element["编号"] !== fight_unit["编号"]
                    && G.FightUnitUtils.get_target_unit_status(fight_unit, element, 1)
                    && element["法术状态"]["尸腐无常"] === undefined) {
                    member_list.push(element);
                }
            }
            return G.FightUtils.hp_order(member_list, max_number);
        },
        "行动前触发": function (fight_data, fight_unit) {
            // 尸腐无常掉血
            let target_number = fight_unit["法术状态"]["尸腐无常"]["攻击编号"];
            let target = G.FightUtils.get_fight_unit_by_number(fight_data, target_number);
            let hp = G.RandomUtils.generate_random(1700, 2000);
            G.FightComputingUtils.remove_hp_and_no_play(fight_data, target, fight_unit, "尸腐无常", hp);
            let targets = G.FightUtils.get_friend_team_group_survive_unit(fight_data, fight_unit, 5, "尸腐无常");
            // 尸腐无常加血
            hp = G.RandomUtils.generate_random(3000, 3500);
            for (let index = 0; index < targets.length; index++) {
                let target = targets[index];
                G.FightComputingUtils.add_target_hp_and_play(target, hp);
            }
        }
    },
    "紧箍咒": {
        // 一定回合内每回合减少对方的气血和气血上限
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let target_count = 1;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "普渡") && G.FightUnitUtils.check_unit_fa_bao(src_unit, "普渡")) {
                let gl = G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "普渡") * 2 + 24;
                if (G.RandomUtils.chance(gl)) {
                    target_count = 2;
                }
            } else if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "赐咒") && G.RandomUtils.chance(54)) {
                target_count = 2;
                if (G.FightUtils.get_friend_ap_status_count(fight_data, src_unit, "炼魂")[1] === 0) {
                    target_count = 3;
                }
            }
            return target_count;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["百毒不侵"]) {
                return false;
            }
            if (G.RandomUtils.chance(95)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "紧箍咒", skill_level);
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["紧箍咒"] = {};
            let hh = 4;
            if (status_level >= 160) {
                hh = 8;
            } else if (status_level >= 120) {
                hh = 7;
            } else if (status_level >= 80) {
                hh = 6;
            } else if (status_level >= 40) {
                hh = 5;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "默诵")) {
                target_unit["法术状态"]["紧箍咒"]["默诵"] = 1;
                hh += 3;
            }
            target_unit["法术状态"]["紧箍咒"]["回合"] = hh;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "庄严")) {
                target_unit["法术状态"]["紧箍咒"]["庄严"] = src_unit["编号"];
                target_unit["防御"] += 15;
                target_unit["法防"] += 15;
            }
            //状态掉血
            let damage = status_level + 600;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "默诵")) {
                damage = damage * 2 + src_unit["固定伤害"];
            }
            if (src_unit["法术状态"]["莲心剑意"]) {
                damage = damage * (1 + src_unit["法术修炼"] * 0.06);
            }
            target_unit["法术状态"]["紧箍咒"]["掉血"] = Math.floor(damage);
        },
        "取消状态": function (fight_data, fight_unit) {
            if (fight_unit["法术状态"]["紧箍咒"]["庄严"]) {
                let target_number = fight_unit["法术状态"]["紧箍咒"]["庄严"]
                let target = G.FightUtils.get_fight_unit_by_number(fight_data, target_number);
                target["防御"] -= 15;
                target["法防"] -= 15;
            }
        },
        "击杀触发": function (fight_data, src_unit, target_unit) {
            if (target_unit["类型"] === "角色" || target_unit["类型"] === "怪物") {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "无怖") && G.RandomUtils.chance(35)) {
                    fight_data["战斗发言"].push({ "id": target_unit["编号"], "内容": `${target_unit["名称"]}偷偷告诉你我的防御五行为：#Y${target_unit["防御五行"]}#24` });
                }
            }
        },
        "行动前触发": function (fight_data, fight_unit) {
            let target_number = fight_unit["法术状态"]["紧箍咒"]["攻击编号"];
            let hp = fight_unit["法术状态"]["紧箍咒"]["掉血"];
            let target = G.FightUtils.get_fight_unit_by_number(fight_data, target_number);
            G.FightComputingUtils.remove_hp_and_no_play(fight_data, target, fight_unit, "紧箍咒", hp);
        }
    },
    "杨柳甘露": {
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (G.FightUnitUtils.is_no_revive(target_unit) || target_unit["类型"] === "bb" || (target_unit["气血上限"] && target_unit["气血上限"] <= 0)) {
                return 0;
            } else {
                return 1;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [150, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let data = Math.floor(skill_level * 5 + 150);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "劳心") && src_unit["最大气血"] >= src_unit["气血"] * 0.3) {
                data = data * 2;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "甘露")) {
                if (target_unit["法术状态"]["锢魂术"] || target_unit["法术状态"]["死亡召唤"]) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "普渡众生", G.FightUnitUtils.get_unit_skill_level(src_unit, "普渡众生"), 4);
                } else {
                    if (G.RandomUtils.chance(50)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "普渡众生", G.FightUnitUtils.get_unit_skill_level(src_unit, "普渡众生"), 4);
                    }
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "莲动") && src_unit["莲动"] === undefined) {
                src_unit["莲动"] = 1;
                data = data * 3;
            }
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "杨柳甘露", data)
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            target_unit["死亡"] = undefined;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["复活"] = true;
        }
    },
    "剑意莲心": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            if (src_unit["法术状态"]["剑意莲心"]) {
                G.FightStatusUtils.canel_unit_status(fight_data, "剑意莲心", src_unit);
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "馀威")) {
                    G.FightUnitUtils.add_fen_nu(src_unit, 15);
                }
                return false;
            }
            src_unit["法术状态"]["剑意莲心"] = {};
            src_unit["法术状态"]["剑意莲心"]["回合"] = 999;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "莲音") && G.RandomUtils.chance(50)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "莲音", 69);
            }
        }
    },
    "莲音": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 3, "伤害": Math.floor(target_unit["伤害"] * 0.2) };
        }
    },

    "莲心剑意": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            if (src_unit["法术状态"]["莲心剑意"]) {
                G.FightStatusUtils.canel_unit_status(fight_data, "莲心剑意", src_unit);
                return false;
            }
            src_unit["法术状态"]["莲心剑意"] = {};
            src_unit["法术状态"]["莲心剑意"]["回合"] = 999;
        },
        "持续回血触发": function (fight_data, src_unit, target_unit, hp) {
            // 莲心剑意下持续回血量减少
            hp = Math.floor(hp * 0.9);
            return hp;
        }
    },
    "日光华": {
        // 对敌方1(6)个目标造成固定伤害(括号中是以NPC为目标时的效果)。若目标防御五行为木，则同时减少气血上限。
        "技能类型": "固伤",
        "吸收": "金",
        "弱点": "金",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (fight_data["PK战斗"]) {
                return 1;
            }
            if (skill_level >= 180) {
                return 6;
            } else if (skill_level >= 135) {
                return 5;
            } else if (skill_level >= 90) {
                return 4;
            } else if (skill_level >= 45) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let level = skill_level + target_unit["固定伤害"] + 40;
            let mj = (src_unit["敏捷"] + src_unit["装备敏捷"]) * 0.7;
            let aq = 0;
            if (src_unit["暗器"]) {
                aq = src_unit["暗器"];
            }
            let fl_ratio = 1 - target_list.length * 0.1;
            if (fl_ratio <= 0.6) {
                fl_ratio = 0.6;
            }
            let final_ratio = 1
            if (src_unit["固伤加成"]) {
                final_ratio = src_unit["固伤加成"];
            }
            let fs_ratio = 0;
            let xl_ratio = src_unit["法术修炼"] - target_unit["抗法修炼"];

            let damage = (level + aq + mj) * fl_ratio * final_ratio * (1 + xl_ratio * 0.02);

            if (index === 0) {
                damage += src_unit["装备伤害"] * 0.78
                if (src_unit["法术状态"]["莲心剑意"]) {
                    damage = damage * (1 + src_unit["法术修炼"] * 0.03);
                }
            }
            if (src_unit["借灵"]) {
                damage += src_unit["借灵"]
            }
            if (target_unit["门派"] !== "普陀山" && G.FightUtils.get_wx_suppress("金", target_unit["防御五行"]) && (target_unit["法术状态"]["颠倒五行"] === undefined || target_unit["法术状态"]["颠倒五行"]["增加躲避"] === undefined)) {
                damage = damage * 1.2;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "慧眼") && target_unit["类型"] === "bb") {
                    damage = damage * 1.6
                    if (G.RandomUtils.chance(60)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "慧眼", 11);
                    }
                }
                if (G.FightUnitUtils.check_unit_shen_qi_skill(src_unit, "璇华")) {
                    damage = damage * (1 + 0.1 * src_unit["神器"]["等级"]);
                }
            }
            let ad_bj = false;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "法咒")) {
                let gl = 15;
                if (index === 0 && src_unit["法术状态"]["莲心剑意"]) {
                    gl = 40;
                }
                if (G.RandomUtils.chance(gl)) {
                    ad_bj = true;
                }
            }
            if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "金刚杵")) {
                let wx = 25;
                if (src_unit["金刚杵"] === "金") {
                    wx = 30;
                } else if (src_unit["金刚杵"] === "火") {
                    wx = 20;
                }
                damage += wx + Math.floor(G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "金刚杵") * 1.25);
            }
            if (src_unit["队伍"] === 0) {
                damage += src_unit["等级"] + 20;
            }
            if (src_unit["行云流水"]) {
                damage += src_unit["行云流水"]
            }
            if (ad_bj) {
                damage = damage * 1.5;
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["特效"].push("法术暴击");
            }
            return Math.floor(damage);
        },
        "扣血触发": function (fight_data, src_unit, target_unit, remove_hp) {
            if (target_unit["防御五行"] === "木") {
                let remove_max_hp = Math.floor(remove_hp / 0.3);
                G.FightUnitUtils.remove_unit_hp_max(fight_data, src_unit, target_unit, remove_max_hp)
            }
        }
    },
    "靛沧海": {
        // 对敌方1(6)个目标造成固定伤害(括号中是以NPC为目标时的效果)。如果目标防御五行为火，则同时减少气血上限。
        "技能类型": "固伤",
        "吸收": "水",
        "弱点": "水",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            // if (is_pk || fight_unit["队伍"]===0 ){
            if (fight_data["PK战斗"]) {
                return 1;
            }
            if (skill_level >= 180) {
                return 6;
            } else if (skill_level >= 135) {
                return 5;
            } else if (skill_level >= 90) {
                return 4;
            } else if (skill_level >= 45) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let level = skill_level + target_unit["固定伤害"] + 100;
            let mj = (src_unit["敏捷"] + src_unit["装备敏捷"]) * 0.7;
            let aq = 0;
            if (src_unit["暗器"]) {
                aq = src_unit["暗器"];
            }
            let fl_ratio = 1 - target_list.length * 0.1;
            if (fl_ratio <= 0.6) {
                fl_ratio = 0.6;
            }
            let final_ratio = 1;
            if (src_unit["固伤加成"]) {
                final_ratio = src_unit["固伤加成"];
            }
            let fs_ratio = 0;
            let xl_ratio = src_unit["法术修炼"] - target_unit["抗法修炼"];
            let damage = (level + aq + mj) * fl_ratio * final_ratio * (1 + xl_ratio * 0.02)
            if (index === 0) {
                damage += src_unit["装备伤害"] * 0.78;
                if (src_unit["法术状态"]["莲心剑意"]) {
                    damage = damage * (1 + src_unit["法术修炼"] * 0.03);
                }
            }
            if (src_unit["借灵"]) {
                damage += src_unit["借灵"];
            }
            if (target_unit["门派"] !== "普陀山" && G.FightUtils.get_wx_suppress("水", target_unit["防御五行"]) && (target_unit["法术状态"]["颠倒五行"] === undefined || target_unit["法术状态"]["颠倒五行"]["增加躲避"] === undefined)) {
                damage = damage * 1.2;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "慧眼") && target_unit["类型"] === "bb") {
                    damage = damage * 1.6
                    if (G.RandomUtils.chance(60)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "慧眼", 11);
                    }
                }
                if (G.FightUnitUtils.check_unit_shen_qi_skill(src_unit, "璇华")) {
                    damage = damage * (1 + 0.1 * src_unit["神器"]["等级"]);
                }
            }
            let ad_bj = false;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "法咒")) {
                let gl = 15;
                if (index === 0 && src_unit["法术状态"]["莲心剑意"]) {
                    gl = 40;
                }
                if (G.RandomUtils.chance(gl)) {
                    ad_bj = true;
                }
            }
            if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "金刚杵")) {
                let wx = 25;
                if (src_unit["金刚杵"] === "金") {
                    wx = 30;
                } else if (src_unit["金刚杵"] === "火") {
                    wx = 20;
                }
                damage += wx + Math.floor(G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "金刚杵") * 1.25);
            }
            if (src_unit["队伍"] === 0) {
                damage += src_unit["等级"] + 20;
            }
            if (src_unit["行云流水"]) {
                damage += src_unit["行云流水"];
            }
            if (ad_bj) {
                damage = damage * 1.5;
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["特效"].push("法术暴击");
            }
            return Math.floor(damage);
        },
        "扣血触发": function (fight_data, src_unit, target_unit, remove_hp) {
            if (target_unit["防御五行"] === "火") {
                let remove_max_hp = Math.floor(remove_hp / 0.3);
                G.FightUnitUtils.remove_unit_hp_max(fight_data, src_unit, target_unit, remove_max_hp)
            }
        }
    },
    "巨岩破": {
        // 对敌方1(6)个目标造成固定伤害(括号中是以NPC为目标时的效果)。如果目标防御五行为水，则同时减少气血上限。
        "技能类型": "固伤",
        "吸收": "土",
        "弱点": "土",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            // if (is_pk || fight_unit["队伍"]===0 ){
            if (fight_data["PK战斗"]) {
                return 1;
            }
            if (skill_level >= 180) {
                return 6;
            } else if (skill_level >= 135) {
                return 5;
            } else if (skill_level >= 90) {
                return 4;
            } else if (skill_level >= 45) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let level = skill_level + src_unit["固定伤害"] + 100;
            let mj = (src_unit["敏捷"] + src_unit["装备敏捷"]) * 0.7;
            let aq = 0;
            if (src_unit["暗器"]) {
                aq = src_unit["暗器"];
            }
            let fl_ratio = 1 - target_list.length * 0.1;
            if (fl_ratio <= 0.6) {
                fl_ratio = 0.6;
            }
            let final_ratio = 1
            if (src_unit["固伤加成"]) {
                final_ratio = src_unit["固伤加成"];
            }
            let fs_ratio = 0;
            let xl_ratio = src_unit["法术修炼"] - target_unit["抗法修炼"];
            let damage = (level + aq + mj) * fl_ratio * final_ratio * (1 + xl_ratio * 0.02);
            if (index === 0) {
                damage += src_unit["装备伤害"] * 0.78;
                if (src_unit["法术状态"]["莲心剑意"]) {
                    damage = damage * (1 + src_unit["法术修炼"] * 0.03);
                }
            }
            if (src_unit["借灵"]) {
                damage += src_unit["借灵"];
            }
            if (target_unit["门派"] !== "普陀山" && G.FightUtils.get_wx_suppress("土", target_unit["防御五行"]) && (target_unit["法术状态"]["颠倒五行"] === undefined || target_unit["法术状态"]["颠倒五行"]["增加躲避"] === undefined)) {
                damage = damage * 1.2;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "慧眼") && target_unit["类型"] === "bb") {
                    damage = damage * 1.6;
                    if (G.RandomUtils.chance(60)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "慧眼", 11);
                    }
                }
                if (G.FightUnitUtils.check_unit_shen_qi_skill(src_unit, "璇华")) {
                    damage = damage * (1 + 0.1 * src_unit["神器"]["等级"]);
                }
            }
            let ad_bj = false;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "法咒")) {
                let gl = 15;
                if (index === 0 && src_unit["法术状态"]["莲心剑意"]) {
                    gl = 40;
                }
                if (G.RandomUtils.chance(gl)) {
                    ad_bj = true;
                }
            }
            if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "金刚杵")) {
                let wx = 25;
                if (src_unit["金刚杵"] === "金") {
                    wx = 30;
                } else if (src_unit["金刚杵"] === "火") {
                    wx = 20;
                }
                damage += wx + Math.floor(G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "金刚杵") * 1.25)
            }
            if (src_unit["队伍"] === 0) {
                damage += src_unit["等级"] + 20;
            }
            if (src_unit["行云流水"]) {
                damage += src_unit["行云流水"];
            }
            if (ad_bj) {
                damage = damage * 1.5;
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["特效"].push("法术暴击");
            }
            return Math.floor(damage);
        },
        "扣血触发": function (fight_data, src_unit, target_unit, remove_hp) {
            if (target_unit["防御五行"] === "水") {
                let remove_max_hp = Math.floor(remove_hp / 0.3);
                G.FightUnitUtils.remove_unit_hp_max(fight_data, src_unit, target_unit, remove_max_hp)
            }
        }
    },
    "苍茫树": {
        //对敌方1(6)个目标造成固定伤害(括号中是以NPC为目标时的效果)。如果目标防御五行为土，则同时减少气血上限。
        "技能类型": "固伤",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            // if (is_pk || fight_unit["队伍"]===0 ){
            if (fight_data["PK战斗"]) {
                return 1;
            }
            if (skill_level >= 180) {
                return 6;
            } else if (skill_level >= 135) {
                return 5;
            } else if (skill_level >= 90) {
                return 4;
            } else if (skill_level >= 45) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let level = G.FightUnitUtils.get_unit_skill_level(src_unit, "靛沧海") + src_unit["固定伤害"] + 100;
            let mj = (src_unit["敏捷"] + src_unit["装备敏捷"]) * 0.7;
            let aq = 0;
            if (src_unit["暗器"]) {
                aq = src_unit["暗器"];
            }
            let fl_ratio = 1 - target_list.length * 0.1;
            if (fl_ratio <= 0.6) {
                fl_ratio = 0.6;
            }
            let final_ratio = 1;
            if (src_unit["固伤加成"]) {
                final_ratio = src_unit["固伤加成"];
            }
            let fs_ratio = 0;;
            let xl_ratio = src_unit["法术修炼"] - target_unit["抗法修炼"];
            let damage = (skill_level + aq + mj) * fl_ratio * final_ratio * (1 + xl_ratio * 0.02);
            if (index === 0) {
                damage += src_unit["装备伤害"] * 0.78;
                if (src_unit["法术状态"]["莲心剑意"]) {
                    damage = damage * (1 + src_unit["法术修炼"] * 0.03);
                }
            }
            if (src_unit["借灵"]) {
                damage += src_unit["借灵"];
            }
            if (target_unit["门派"] !== "普陀山" && G.FightUtils.get_wx_suppress("木", target_unit["防御五行"]) &&
                (target_unit["法术状态"]["颠倒五行"] === undefined || target_unit["法术状态"]["颠倒五行"]["增加躲避"] === undefined)) {
                damage = damage * 1.2;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "慧眼") && target_unit["类型"] === "bb") {
                    damage = damage * 1.6;
                    if (G.RandomUtils.chance(60)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "慧眼", 11);
                    }
                }
                if (G.FightUnitUtils.check_unit_shen_qi_skill(src_unit, "璇华")) {
                    damage = damage * (1 + 0.1 * src_unit["神器"]["等级"]);
                }
            }
            if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "金刚杵")) {
                let wx = 25;
                if (src_unit["金刚杵"] === "金") {
                    wx = 30;
                } else if (src_unit["金刚杵"] === "火") {
                    wx = 20;
                }
                damage += wx + Math.floor(G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "金刚杵") * 1.25);
            }
            if (src_unit["队伍"] === 0) {
                damage += src_unit["等级"] + 20;
            }
            if (src_unit["行云流水"]) {
                damage += src_unit["行云流水"];
            }
            let ad_bj = false;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "法咒")) {
                let gl = 15;
                if (index === 0 && src_unit["法术状态"]["莲心剑意"]) {
                    gl = 40;
                }
                if (G.RandomUtils.chance(gl)) {
                    ad_bj = true;
                }
            }
            if (ad_bj) {
                damage = damage * 1.5;
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["特效"].push("法术暴击");
            }
            return Math.floor(damage);
        },
        "扣血触发": function (fight_data, src_unit, target_unit, remove_hp) {
            if (target_unit["防御五行"] === "土") {
                let remove_max_hp = Math.floor(remove_hp / 0.3);
                G.FightUnitUtils.remove_unit_hp_max(fight_data, src_unit, target_unit, remove_max_hp)
            }
        }
    },
    "地裂火": {
        //对敌方1(6)个目标造成固定伤害(括号中是以NPC为目标时的效果)。如果目标防御五行为金，则同时减少气血上限
        "技能类型": "固伤",
        "吸收": "火",
        "弱点": "火",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (fight_data["PK战斗"]) {
                return 1;
            }
            if (skill_level >= 180) {
                return 6;
            } else if (skill_level >= 135) {
                return 5;
            } else if (skill_level >= 90) {
                return 4;
            } else if (skill_level >= 45) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let level = skill_level + target_unit["固定伤害"] + 40;
            let mj = (src_unit["敏捷"] + src_unit["装备敏捷"]) * 0.7;
            let aq = 0;
            if (src_unit["暗器"]) {
                aq = src_unit["暗器"];
            }
            let fl_ratio = 1 - target_list.length * 0.1;
            if (fl_ratio <= 0.6) {
                fl_ratio = 0.6;
            }
            let final_ratio = 1
            if (src_unit["固伤加成"]) {
                final_ratio = src_unit["固伤加成"];
            }
            let fs_ratio = 0;
            let xl_ratio = src_unit["法术修炼"] - target_unit["抗法修炼"];
            let damage = (level + aq + mj) * fl_ratio * final_ratio * (1 + xl_ratio * 0.02);
            if (index === 0) {
                damage += src_unit["装备伤害"] * 0.78;
                if (src_unit["法术状态"]["莲心剑意"]) {
                    damage = damage * (1 + src_unit["法术修炼"] * 0.03);
                }
            }
            if (src_unit["借灵"]) {
                damage += src_unit["借灵"];
            }
            if (target_unit["门派"] !== "普陀山" && G.FightUtils.get_wx_suppress("火", target_unit["防御五行"]) && (target_unit["法术状态"]["颠倒五行"] === undefined || target_unit["法术状态"]["颠倒五行"]["增加躲避"] === undefined)) {
                damage = damage * 1.2;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "慧眼") && target_unit["类型"] === "bb") {
                    damage = damage * 1.6;
                    if (G.RandomUtils.chance(60)) {
                        G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "慧眼", 11);
                    }
                }
                if (G.FightUnitUtils.check_unit_shen_qi_skill(src_unit, "璇华")) {
                    damage = damage * (1 + 0.1 * src_unit["神器"]["等级"]);
                }
            }
            let ad_bj = false;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "法咒")) {
                let gl = 15;
                if (index === 0 && src_unit["法术状态"]["莲心剑意"]) {
                    gl = 40;
                }
                if (G.RandomUtils.chance(gl)) {
                    ad_bj = true;
                }
            }
            if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "金刚杵")) {
                let wx = 25
                if (src_unit["金刚杵"] === "金") {
                    wx = 30
                } else if (src_unit["金刚杵"] === "火") {
                    wx = 20
                }
                damage += wx + Math.floor(G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "金刚杵") * 1.25)
            }
            if (src_unit["队伍"] === 0) {
                damage += src_unit["等级"] + 20;
            }
            if (src_unit["行云流水"]) {
                damage += src_unit["行云流水"];
            }
            if (ad_bj) {
                damage = damage * 1.5;
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["特效"].push("法术暴击");
            }
            return Math.floor(damage);
        },
        "扣血触发": function (fight_data, src_unit, target_unit, remove_hp) {
            if (target_unit["防御五行"] === "金") {
                let remove_max_hp = Math.floor(remove_hp / 0.3);
                G.FightUnitUtils.remove_unit_hp_max(fight_data, src_unit, target_unit, remove_max_hp)
            }
        }
    },
    "苍茫刺": {
        "技能类型": "物理",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 1.1;
            let lj_number = 1;
            if (src_unit["法术状态"]["剑意莲心"]) {
                if (G.FightUnitUtils.consummer_wu_xing_zhu(src_unit)) {
                    lj_number = 2;
                }
            } else {
                let gl = 50;
                if (src_unit["五行珠"] >= 3 && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "相生")) {
                    gl = 75;
                }
                if (G.FightUtils.get_wx_suppress("金", target_list[0]["防御五行"]) || (src_unit["五行珠"] <= 0 && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "执念"))) {
                    gl = 100;
                }
                if (G.RandomUtils.chance(gl)) {
                    G.FightUnitUtils.add_wu_xing_zhu(src_unit);
                }
            }
            if (src_unit["攻击五行"] === "木") {
                start_damage = 1.2;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "因缘") && G.FightUtils.get_wx_suppress("木", target_list[0]["防御五行"])) {
                start_damage = start_damage * 1.05;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "万象") && src_unit["法术状态"]["颠倒五行"]) {
                start_damage = start_damage * 1.08;
            }
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": false, "连击次数": lj_number };
        }
    },
    "日光耀": {
        "技能类型": "物理",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 1.1;
            let lj_number = 1;
            if (src_unit["法术状态"]["剑意莲心"]) {
                if (G.FightUnitUtils.consummer_wu_xing_zhu(src_unit)) {
                    lj_number = 2;
                }
            } else {
                let gl = 50;
                if (src_unit["五行珠"] >= 3 && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "相生")) {
                    gl = 75;
                }
                if (G.FightUtils.get_wx_suppress("金", target_list[0]["防御五行"]) || (src_unit["五行珠"] <= 0 && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "执念"))) {
                    gl = 100;
                }
                if (G.RandomUtils.chance(gl)) {
                    G.FightUnitUtils.add_wu_xing_zhu(src_unit);
                }
            }
            if (src_unit["攻击五行"] === "金") { //五行感应
                start_damage = 1.2;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "因缘") && G.FightUtils.get_wx_suppress("金", target_list[0]["防御五行"])) {
                start_damage = start_damage * 1.05;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "万象") && src_unit["法术状态"]["颠倒五行"]) {
                start_damage = start_damage * 1.08;
            }
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": false, "连击次数": lj_number };
        }
    },
    "靛沧啸": {
        "技能类型": "物理",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 1.1;
            let lj_number = 1;
            if (src_unit["法术状态"]["剑意莲心"]) {
                if (G.FightUnitUtils.consummer_wu_xing_zhu(src_unit)) {
                    lj_number = 2;
                }
            } else {
                let gl = 50;
                if (src_unit["五行珠"] >= 3 && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "相生")) {
                    gl = 75;
                }
                if (G.FightUtils.get_wx_suppress("金", target_list[0]["防御五行"]) || (src_unit["五行珠"] <= 0 && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "执念"))) {
                    gl = 100;
                }
                if (G.RandomUtils.chance(gl)) {
                    G.FightUnitUtils.add_wu_xing_zhu(src_unit);
                }
            }
            if (src_unit["攻击五行"] === "水") {
                start_damage = 1.2;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "因缘") && G.FightUtils.get_wx_suppress("水", target_list[0]["防御五行"])) {
                start_damage = start_damage * 1.05;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "万象") && src_unit["法术状态"]["颠倒五行"]) {
                start_damage = start_damage * 1.08;
            }
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": false, "连击次数": lj_number };
        }
    },
    "巨岩击": {
        "技能类型": "物理",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 1.1;
            let lj_number = 1;
            if (src_unit["法术状态"]["剑意莲心"]) {
                if (G.FightUnitUtils.consummer_wu_xing_zhu(src_unit)) {
                    lj_number = 2;
                }
            } else {
                let gl = 50;
                if (src_unit["五行珠"] >= 3 && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "相生")) {
                    gl = 75;
                }
                if (G.FightUtils.get_wx_suppress("金", target_list[0]["防御五行"]) || (src_unit["五行珠"] <= 0 && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "执念"))) {
                    gl = 100;
                }
                if (G.RandomUtils.chance(gl)) {
                    G.FightUnitUtils.add_wu_xing_zhu(src_unit)
                }
            }
            if (src_unit["攻击五行"] === "土") {
                start_damage = 1.2;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "因缘") && G.FightUtils.get_wx_suppress("土", target_list[0]["防御五行"])) {
                start_damage = start_damage * 1.05;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "万象") && src_unit["法术状态"]["颠倒五行"]) {
                start_damage = start_damage * 1.08;
            }
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": false, "连击次数": lj_number };
        }
    },
    "地裂焚": {
        "技能类型": "物理",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 1.1, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        }
    },
    "颠倒五行": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [80, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            src_unit["法术状态"]["颠倒五行"] = {};
            let hh = 9;
            if (status_level >= 160) {
                hh = 10;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "五行制化")) {
                hh += 3;
                target_unit["法术状态"]["颠倒五行"]["增加躲避"] = true;
            }
            if (src_unit["编号"] === target_unit["编号"] && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "万象")) {
                hh += target_unit["五行珠"];
                target_unit["法术状态"]["颠倒五行"]["增加躲避"] = true;
            }
            src_unit["法术状态"]["颠倒五行"]["回合"] = hh;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "普陀山", "清净")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "炙烤", 69);
            }
        }
    },
    "清净": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 2 }
        }
    },
    "慧眼": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 1 }
        }
    },
    "秘术": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 1 }
        }
    },
    "困兽": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 1 }
        }
    },

    //                    盘丝洞                    //
    "天罗地网": {
        "技能类型": "固伤",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (fight_data["PK战斗"]) {
                return 1;
            }
            if (skill_level >= 60) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * attack_number, "魔法"];
        },
        "命中几率": function (fight_data, src_unit, target_unit, skill_level, mzjl) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "迷瘴")) {
                mzjl += 20;
            }
            if (target_unit["法术状态"]["瘴气"] && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "忘川")) {
                mzjl += 10;
            }
            return mzjl;
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let level = skill_level * 2 + 100;
            let aq = 0;
            let final_ratio = 1;
            let xl_ratio = src_unit["法术修炼"] - target_unit["抗法修炼"];
            if (src_unit["固伤加成"]) {
                final_ratio = src_unit["固伤加成"];
            }
            if (src_unit["暗器"]) {
                aq = src_unit["暗器"];
            }
            let damage = (level + aq + src_unit["固定伤害"] + src_unit["伤害"] / 4);

            if (index !== 1) {
                damage = damage * 0.6;
            }
            damage = damage * final_ratio * (1 + xl_ratio * 0.02) + xl_ratio * 5;

            if (!fight_data["PK战斗"] && src_unit["队伍"] !== 0) {
                damage += Math.floor(src_unit["伤害"] * 0.5);
                if (src_unit["粘附"]) {
                    damage += (src_unit["装备伤害"] * 0.18);
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "扑袭") && G.FightUtils.check_fight_unit_sects_is_single(fight_data, src_unit, "盘丝洞") && target_unit["法术状态"]["天罗地网"] === undefined) {
                damage = damage * 1.4;
            }
            if (!target_unit["法术状态"]["天罗地网"] && G.RandomUtils.chance(20)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "天罗地网", level);
            } else {
                if (src_unit["粘附"] && src_unit["奇经八脉"] && src_unit["奇经八脉"]["当前流派"] === "百媚魔姝") {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "天罗地网", level);
                }
            }
            if (src_unit["队伍"] === 0) {
                damage = damage * 0.7;
            }
            if (src_unit["网罗乾坤"]) {
                damage += src_unit["网罗乾坤"];
            }
            if (fight_data["PK战斗"]) {
                return Math.floor(damage * 0.4);
            }
            return Math.floor(damage * 0.9);
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            if (target_unit["法术状态"]["天罗地网"] && custom_data) {
                target_unit["法术状态"]["天罗地网"]["回合"] = custom_data;
                if (src_unit["门派"] === "盘丝洞" && target_unit["类型"] === "角色" && src_unit["奇经八脉"]["当前流派"] === "百媚魔姝") {
                    G.FightUnitUtils.add_fen_nu(src_unit, 4);
                    G.FightUnitUtils.remove_fen_nu(target_unit, 4);
                }
                return false;
            }
            target_unit["法术状态"]["天罗地网"] = {};
            target_unit["法术状态"]["天罗地网"]["回合"] = custom_data ? custom_data : 4;
            let speed = Math.floor(status_level * 0.3);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "迷瘴")) {
                speed = Math.floor(speed + (target_unit["速度"] * 0.05));
                target_unit["法术状态"]["天罗地网"]["伤害"] = Math.floor(status_level * 1.5);
                target_unit["法术状态"]["天罗地网"]["法防"] = Math.floor(status_level * 1.5);
            }
            target_unit["法术状态"]["天罗地网"]["速度"] = speed;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "附骨")) {
                target_unit["法术状态"]["天罗地网"]["附骨"] = 1;
            }
            if (src_unit["门派"] === "盘丝洞" && target_unit["类型"] === "角色" && src_unit["奇经八脉"]["当前流派"] === "百媚魔姝") {
                G.FightUnitUtils.add_fen_nu(src_unit, 4);
                G.FightUnitUtils.remove_fen_nu(target_unit, 4);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "障眼")) {
                target_unit["法术状态"]["天罗地网"]["障眼"] = src_unit["编号"];
            }
        }
    },
    "勾魂": {
        "技能类型": "固伤",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let db = false;
            let damage = Math.floor(skill_level * 3 + target_unit["气血"] * 0.05);
            if (!src_unit["必中"] && src_unit["命中"] < target_unit["躲避"]) {
                let gl = target_unit["躲避"] / 3;
                if (gl > 95) {
                    gl = 95;
                }
                if (G.RandomUtils.chance(gl)) {
                    db = true;
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "媚态")) {
                db = false
            } else if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "绝媚")) {
                db = false
                damage = Math.floor(damage * 1.9);
            }
            if (damage > src_unit["等级"] * 22) {
                damage = src_unit["等级"] * 22;
            }
            if (db) {
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["躲避"] = true;
                return false;
            } else {
                G.FightComputingUtils.add_target_hp_and_play(fight_data, src_unit, Math.floor(damage * 0.5));
            }
            return Math.floor(damage);
        }
    },
    "摄魄": {
        "技能类型": "固伤",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [35, "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1].流程 = 907;
            let mp = Math.floor(skill_level * 3 + target_unit["魔法"] * 0.05);
            let db = false;
            if (!src_unit["必中"] && src_unit["命中"] < target_unit["躲避"]) {
                let gl = target_unit["躲避"] / 3
                if (gl > 95) {
                    gl = 95;
                }
                if (G.RandomUtils.chance(gl)) {
                    db = true;
                }
            }

            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "媚态")) {
            } else if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "绝媚")) {
                mp = Math.floor(mp * 1.9);
            }
            if (!db) {
                G.FightUnitUtils.remove_unit_mp(target_unit, mp);
                G.FightUnitUtils.add_unit_mp(src_unit, mp);
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["成功"] = true;
            }
            return false
        }
    },
    "千蛛噬魂": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 3;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [20 * attack_number + 10, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 0.8, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            if (target_unit["法术状态"] && target_unit["法术状态"]["天罗地网"]) {
                damage = damage * 1.1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "天网") && G.RandomUtils.chance(3)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "天罗地网", 11, 4);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "千蛛") && target_unit["认证码"]) {
                damage = damage * 1.12;
            }
            let bsjl = 0;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "狂击")) {
                bsjl = bsjl + 4;
            }
            return { "伤害": damage, "必杀几率": bsjl, "暴击倍率": 2, "浮空概率": 0 };
        },
        "物理连击触发": function (fight_data, src_unit, target_unit, target_list, attack_number) {
            if (attack_number === 1) {
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["战斗法术"] = "千蛛噬魂";
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["寄存目标"] = target_list.map(e => e["编号"]);
            }
        }
    },
    "蛛丝缠绕": {
        "技能类型": "物理",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "引诛") && target_unit["类型"] === "角色") {
                damage = damage * 1.06;
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        },
        "物理连击触发": function (fight_data, src_unit, target_unit, target_list, attack_number) {
            if (attack_number === 1) {
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["战斗法术"] = "蛛丝缠绕";
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["寄存目标"] = target_list.map(e => e["编号"]);
            }
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_list[0], "天罗地网", 69, 4);
        }
    },
    "绝命毒牙": {
        "技能类型": "物理",
        "冷却回合": function (fight_unit) { return 10 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            if (target_unit["法术状态"] && target_unit["法术状态"]["天罗地网"]) {
                damage = damage * (1 + target_unit["法术状态"]["天罗地网"]["回合"] * 0.1);
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        }
    },
    "牵魂蛛丝": {
        "技能类型": "减益",
        "冷却回合": function (fight_unit) { return 8 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "天罗地网", skill_level, 1);
            // 普通攻击敌方队伍处于天罗地网状态的成员
            let list = G.FightUtils.get_enemy_team_group_survive_unit(fight_data, src_unit, target_unit, 99);
            for (let j = 0; j < list.length; index++) {
                let unit = list[j];
                if (unit["法术状态"] && unit["法术状态"]["天罗地网"]) {
                    src_unit["指令"]["目标"] = unit["编号"];
                    // 普通攻击
                    G.FightNormalAttackUtils.computing_normal_attack(fight_data, src_unit, 1);
                }
            }
        }
    },
    "含情脉脉": {
        // 成功封印目标后，每回合开始时目标减少90点魔法值，直到封印解除。若因此效果导致魔法值为0，则额外受到(目标等级×4)的气血伤害。
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["寡欲令"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "含情脉脉", skill_level);
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            let hh = 1;
            if (status_level >= 125) {
                hh = 6;
            } else if (status_level >= 100) {
                hh = 5;
            } else if (status_level >= 75) {
                hh = 4;
            } else if (status_level >= 45) {
                hh = 3;
            } else if (status_level >= 25) {
                hh = 2;
            }
            target_unit["法术状态"]["含情脉脉"] = {};
            target_unit["法术状态"]["含情脉脉"]["回合"] = hh;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "忘忧")) {
                target_unit["法术状态"]["含情脉脉"]["忘忧"] = true;
            }
        },
        "行动前触发": function (fight_data, fight_unit) {
            if (fight_unit["法术状态"]["含情脉脉"]["忘忧"]) {
                if (fight_unit["魔法"] > 0) {
                    G.FightUnitUtils.remove_unit_mp(fight_data, fight_unit, 90);
                } else {
                    let hp = fight_unit["等级"] * 4;
                    let target_number = fight_unit["法术状态"]["含情脉脉"]["攻击编号"];
                    let target = G.FightUtils.get_fight_unit_by_number(fight_data, target_number);
                    G.FightComputingUtils.remove_hp_and_no_play(fight_data, fight_unit, target, "含情脉脉", hp);
                }
            }
        },
        "持续回血触发": function (fight_data, src_unit, target_unit, hp) {
            if (target_unit["法术状态"]["含情脉脉"]["忘情"]) {
                // 忘情对持续回血的影响
                hp = Math.floor(hp * target_unit["法术状态"]["含情脉脉"]["忘情"]);
            }
            return hp;
        }
    },
    "偷龙转凤": {
        // 对目标施法后（可以是本方或敌方)，目标立刻损失所有魔法，但在回合结束时会回复损失魔法的10%，持续8回合。
        "技能类型": "单封",
        "冷却回合": function (fight_unit) { return 8 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [80, "愤怒"];
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            return true;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["偷龙转凤"] = {};
            target_unit["法术状态"]["偷龙转凤"]["回合"] = 8;
            target_unit["法术状态"]["偷龙转凤"]["损失魔法"] = target_unit["魔法"];
        },
        // TODO 应当放到回合结束
        "行动前触发": function (fight_data, fight_unit) {
            // 偷龙转凤回蓝
            G.FightUnitUtils.add_unit_mp(fight_unit, Math.floor(fight_unit["法术状态"]["偷龙转凤"]["损失魔法"] * 0.1));
        }
    },
    "落花成泥": {
        // 靡靡之音进入敌人耳际，使目标下回合彷徨不知所措、额外受到24%伤害，同时100%几率无法进行除灵宝以外的任何行动。(不受化生寺门派特色影响)
        "不可行动": true,
        "技能类型": "减益",
        "冷却回合": function (fight_unit) { return 4 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [20, "愤怒"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["落花成泥"] = {};
            target_unit["法术状态"]["落花成泥"]["回合"] = 2;
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            if (target_unit["法术状态"]["落花成泥"]["回合"] === 1) {
                damage = damage * 1.24;
            }
        }
    },
    "魔音摄魂": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "魔法"];
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["寡欲令"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "魔音摄魂", skill_level);
            }
        },
        "命中几率": function (fight_data, src_unit, target_unit, skill_level, mzjl) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "鼓乐")) {
                mzjl += 20;
            }
            if (target_unit["法术状态"]["瘴气"] && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "忘川")) {
                mzjl += 10;
            }
            return mzjl;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["魔音摄魂"] = {};
            target_unit["法术状态"]["魔音摄魂"]["回合"] = Math.floor(status_level / 35) + 2;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "魔音")) {
                target_unit["法术状态"]["魔音摄魂"]["魔音"] = 1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "绝殇")) {
                target_unit["法术状态"]["魔音摄魂"]["绝殇"] = fight_data["回合"];
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "迷意")) {
                target_unit["法术状态"]["魔音摄魂"]["迷意"] = 1;
            }
        },
        "持续回血触发": function (fight_data, src_unit, target_unit, hp) {
            // 不可以持续回血
            return false;
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            if (src_unit["法术状态"]["魔音摄魂"]["魔音"]) {
                damage -= (damage * 0.18);
            }
        }
    },
    "瘴气": {
        // 临时降低对手接受治疗的效果
        "技能类型": "固伤",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let sl = 3;
            if (skill_level >= 150) {
                sl = 4;
            }
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["意乱"]) {
                sl = Math.floor(skill_level / 20 + 1)
            }
            return sl;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * attack_number, "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 909;
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "瘴气", skill_level);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "媚态") && target_unit["法术状态"]["寡欲令"]) {
                G.FightStatusUtils.canel_unit_status(fight_data, "寡欲令", target_unit);
            }
            return false;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["瘴气"] = {};
            let hh = 4;
            if (status_level >= 150) {
                hh = 5;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "忘川")) {
                hh += 3;
            } else if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "连绵")) {
                hh += 4;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "绝殇")) {
                target_unit["法术状态"]["瘴气"]["绝殇"] = fight_data["回合"]
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "意乱")) {
                hh = hh - 1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "迷意")) {
                target_unit["法术状态"]["瘴气"]["降魔"] = 0.7;
            }
            target_unit["法术状态"]["瘴气"]["回合"] = hh;
        },
        "行动前触发": function (fight_data, fight_unit) {
            // 降魔扣蓝
            if (fight_unit["法术状态"]["瘴气"]["降魔"]) {
                G.FightUnitUtils.remove_unit_mp(fight_data, fight_unit, 40);
            }
        }
    },
    "姐妹同心": {
        "技能类型": "固伤",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 907;
            let gl = skill_level - target_unit["等级"] + 60;
            let mp = Math.floor(skill_level * 3 + target_unit["魔法"] * 0.05);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "怜心")) {
                gl += 12;
                mp = Math.floor(mp * 1.1);
                if (src_unit["怜心"] === undefined && G.FightUtils.check_fight_unit_sects_is_single(fight_data, src_unit, "盘丝洞")) {
                    gl = 100;
                    src_unit["怜心"] = 1;
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "魔瘴")) {
                mp = Math.floor(mp * 1.12);
            }
            if (G.RandomUtils.chance(gl)) {
                G.FightUnitUtils.remove_unit_mp(target_unit, mp);
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["成功"] = true;
                if (target_unit["魔法"] <= 0 && G.RandomUtils.chance(50) && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "倾情")) {
                    G.FightSealSkillUtils.computing_single_seal_skill(fight_data, src_unit, target_unit, "含情脉脉", G.FightUnitUtils.get_unit_skill_level(src_unit, "含情脉脉"));
                }
            }
            return false;
        }
    },
    "盘丝阵": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 12;
            if (skill_level >= 160) {
                hh = 12;
            } else if (skill_level >= 120) {
                hh = 12;
            } else if (skill_level >= 80) {
                hh = 12;
            } else if (skill_level >= 40) {
                hh = 12;
            }
            return { "回合": hh, "防御": Math.floor(target_unit["防御"] * 0.13) };
        }
    },
    "复苏": {
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [60, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.sects_fengyin_ap["天宫"]);
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "复苏", skill_level);
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["复苏"] = {};
            target_unit["法术状态"]["复苏"]["回合"] = 4;
        }
    },
    "媚眼如丝": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "金鸦火羽（高级）"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"]) {
                if (fight_data["全局状态"]["媚眼如丝"]) {
                    fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["全屏"] = true;
                    fight_data["全局状态"]["媚眼如丝"]["回合"] = 4;
                } else {
                    fight_data["全局状态"]["媚眼如丝"]["回合"] = 4;
                }
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["媚眼如丝"] = {};
            target_unit["法术状态"]["媚眼如丝"]["回合"] = 1;
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = Math.floor(damage * 0.9);
        }
    },
    "幻镜术": {
        // TODO 将部分法术攻击转移至敌方随机目标上，持续1回合。
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 5 },
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "愤怒"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["幻镜术"] = {};
            target_unit["法术状态"]["幻镜术"]["回合"] = 1;
        },
        "被攻击法伤反弹": function (fight_data, src_unit, target_unit, skill_name, damage) {
            let cureent_index = fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"].length - 1;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][cureent_index]["反弹"] = true;
            let js_target = G.FightUtils.get_enemy_team_single_survive_unit(fight_data, target_unit);
            if (js_target["编号"] != target_unit["编号"] && G.FightUnitUtils.check_fight_unit_jingmai(target_unit, "盘丝洞", "幻镜") && G.RandomUtils.chance(30)) {
                js_target = target_unit;
            }
            G.FightComputingUtils.remove_hp_js_and_play(fight_data, target_unit, js_target, damage, skill_name);
            G.FightUtils.add_waiting_play_time(fight_data, 1, "幻镜术 被攻击法伤反弹");
            return true;
        }
    },

    //                    阴曹地府                    //
    "百爪狂杀": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 4
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [35 * attack_number, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": true, "重复次数": 1, "起始伤害": 0.8, "叠加伤害": 0, "重复提示": true, "连击次数": 1 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            if (src_unit["法术状态"]["噬毒"]) {
                damage = damage * 1.6;
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            if (src_unit["法术状态"]["噬毒"]) {
                G.FightStatusUtils.canel_unit_status(fight_data, "噬毒", src_unit);
            }
        },
        "物理伤害结果": function (fight_data, src_unit, target_unit, damage) {
            // TODO
            if (src_unit["必中"]) {
                if (fight_data["PK战斗"]) {
                    damage = damage * 1.1;
                } else {
                    damage = damage * 1.03;
                }
            }
        }
    },
    "魍魉追魂": {
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 4 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (target_unit["气血"] > 0 || target_unit["类型"] === "bb") {
                return 0;
            } else {
                return 1;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [[100, 20], "魔法"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index] = { "编号": target_unit["编号"], "特效": ["魍魉追魂"] };
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["魍魉追魂"] = {};
            target_unit["法术状态"]["魍魉追魂"]["回合"] = 999;
            let status_count = G.FightUtils.get_friend_ap_status_count(fight_data, src_unit, "魍魉追魂")[0];
            target_unit["法术状态"]["魍魉追魂"]["增伤"] = (4 + 2 * status_count) * 0.01;
        },
        "攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * (1 + src_unit["法术状态"]["魍魉追魂"]["增伤"]);
        }
    },
    "阎罗令": {
        // 可攻击多人，减少对手的气血和气血上限。夜晚使用效果提高。
        "技能类型": "固伤",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            // if (fight_unit["队伍"]===0 ){
            //     return 1;
            // }
            if (skill_level >= 150) {
                return 7;
            } else if (skill_level >= 125) {
                return 6;
            } else if (skill_level >= 100) {
                return 5;
            } else if (skill_level >= 75) {
                return 4;
            } else if (skill_level >= 50) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [20 * attack_number, "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let level = skill_level * 3 + 100;
            let mj = (src_unit["敏捷"] + src_unit["装备敏捷"]) * 0.5;
            let aq = 0;
            let fl_ratio = 1 - target_list.length * 0.1;
            if (fl_ratio <= 0.6) {
                fl_ratio = 0.6;
            }
            let final_ratio = 1
            let xl_ratio = src_unit["法术修炼"] - target_unit["抗法修炼"];
            if (src_unit["固伤加成"]) {
                final_ratio = src_unit["固伤加成"];
            }
            if (src_unit["暗器"]) {
                aq = src_unit["暗器"];
            }
            let damage = (level + aq + src_unit["固定伤害"] + mj) * fl_ratio * final_ratio * (1 + xl_ratio * 0.02) + xl_ratio * 5 + 10;
            if (index === 0) {
                damage += src_unit["装备伤害"] * 0.5;
            } else {
                damage += src_unit["装备伤害"] * 0.23;
            }

            if (_SystemHourData["昼夜"] === 1 && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "夜行")) {
                damage += 50;
            }
            if (src_unit["索命无常"]) {
                damage += src_unit["索命无常"];
            }
            if (fight_data["PK战斗"]) {
                return Math.floor(damage * 0.5);
            }
            return Math.floor(damage);
        },
        "扣血触发": function (fight_data, src_unit, target_unit, remove_hp) {
            let remove_max_hp = Math.floor(remove_hp / 0.3);
            G.FightUnitUtils.remove_unit_hp_max(fight_data, src_unit, target_unit, remove_max_hp);
        }
    },
    "判官令": {
        // 对敌方单个目标造成固定伤害，并减少目标的魔法。夜晚使用效果提高。
        "技能类型": "固伤",
        "冷却回合": function (fight_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "阴曹地府", "咒令")) {
                return 6;
            }
        },
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [20, "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let level = skill_level * 5 + 100;
            let mj = (src_unit["敏捷"] + src_unit["装备敏捷"]) * 0.5;
            let aq = 0;
            let final_ratio = 1;
            let xl_ratio = src_unit["法术修炼"] - target_unit["抗法修炼"];
            if (src_unit["固伤加成"]) {
                final_ratio = src_unit["固伤加成"];
            }
            if (src_unit["暗器"]) {
                aq = src_unit["暗器"];
            }
            let damage = (level + aq + src_unit["固定伤害"] + mj) * final_ratio * (1 + xl_ratio * 0.02) + xl_ratio * 5 + 10;
            if (index === 0) {
                damage += src_unit["装备伤害"] * 0.5;
            } else {
                damage += src_unit["装备伤害"] * 0.23;
            }
            if (fight_data["PK战斗"]) {
                let mp = level;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "咒令")) {
                    mp = Math.floor(mp * 1.6);
                }
                G.FightUnitUtils.remove_unit_mp(target_unit, mp);
                return Math.floor(damage * 0.5);
            }
            return Math.floor(damage);
        },
        "扣血触发": function (fight_data, src_unit, target_unit, remove_hp) {
            G.FightUnitUtils.remove_unit_mp(fight_data, target_unit, Math.floor(remove_hp / 0.3));
        }
    },
    "寡欲令": {
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.sects_fengyin_ap["盘丝洞"]);
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "寡欲令", skill_level);
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["寡欲令"] = {};
            target_unit["法术状态"]["寡欲令"]["回合"] = 4;
        }
    },
    "恶焰": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 6, "伤害": Math.floor(target_unit["伤害"] * 0.12) };
        }
    },
    "轮回": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 6, "伤害": 60 };
        }
    },

    "百鬼噬魂": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 4
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [35 * attack_number, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 0.8, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            let gl = 20;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "阴翳")) {
                gl = gl + 12;
            }
            if (target_unit["法术状态"] && target_unit["法术状态"]["摄魂"] && target_unit["法术状态"]["摄魂"]["攻击编号"] === src_unit["编号"] && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "入魂")) {
                gl = gl + 50;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "蚀骨") && G.FightUtils.get_enemy_ap_status_count(fight_data, src_unit, "尸腐毒")[0] === 0) {
                gl = gl + 15;
            }
            if (G.RandomUtils.chance(gl)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "尸腐毒", G.FightUnitUtils.get_unit_skill_level(src_unit, "百鬼噬魂"));
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        }
    },
    "血影蚀心": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 1, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            let gl = 30;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "阴翳")) {
                gl = gl + 12;
            }
            if (target_unit["法术状态"] && target_unit["法术状态"]["摄魂"] && target_unit["法术状态"]["摄魂"]["攻击编号"] === src_unit["编号"] && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "入魂")) {
                gl = gl + 50;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "蚀骨") && G.FightUtils.get_enemy_ap_status_count(fight_data, src_unit, "尸腐毒")[0] === 0) {
                gl = gl + 15;
            }
            if (G.RandomUtils.chance(gl)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "尸腐毒", G.FightUnitUtils.get_unit_skill_level(src_unit, "百鬼噬魂"));
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        }
    },
    "六道无量": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 2, "防御": custom_data };
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 1, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            if (target_unit["类型"] === "角色") {
                let speed = Math.floor((src_unit["防御"] - target_unit["防御"]) * 0.75);
                speed = Math.abs(speed);
                if (speed > src_unit["等级"] * 1.6 + 70) {
                    speed = Math.floor(src_unit["等级"] * 1.6 + 70);
                }
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "六道无量", 11, speed);
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "六道无量", 11, speed);
            }

            let bsjl = 0;
            if (src_unit["法术状态"]["噬毒"]) {
                bsjl = 10;
                damage = damage * 1.6;
            }
            return { "伤害": damage, "必杀几率": bsjl, "暴击倍率": 2, "浮空概率": 0 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            if (src_unit["法术状态"]["噬毒"]) {
                G.FightStatusUtils.canel_unit_status(fight_data, "噬毒", src_unit);
            }
        },
        "物理伤害结果": function (fight_data, src_unit, target_unit, damage) {
            // TODO 
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "六道")) {
                damage += G.FightUnitUtils.get_unit_skill_level(src_unit, "六道无量") * 4;
            }
        }
    },
    "无赦咒令": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 1, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            let lszy = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.relieve_gain_status_ap, 1);
            if (lszy.length > 0) {
                let jczt = G.RandomUtils.random_get_array(lszy);
                G.FightStatusUtils.canel_unit_status(fight_data, jczt, target_unit);
            }
            if (target_unit["法术状态"] && target_unit["法术状态"]["尸腐毒"] || target_unit["法术状态"]["毒"]) {
                let lszy = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.relieve_gain_status_ap, 1);
                if (lszy.length > 0) {
                    let jczt = G.RandomUtils.random_get_array(lszy);
                    G.FightStatusUtils.canel_unit_status(fight_data, jczt, target_unit);
                }
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        }
    },
    "生杀予夺": {
        "技能类型": "物理",
        "冷却回合": function (fight_unit) { return 36 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 1.3, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            let bjbl = 2;
            if (target_unit["法术状态"]["尸腐毒"]) {
                bjbl = 3.2;
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": bjbl, "浮空概率": 0 };
        }
    },
    "魂飞魄散": {
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 2
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [80, "魔法"];
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let lssj = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.relieve_gain_status_ap, 1);
            if (lssj.length > 0) {
                let jczt = G.RandomUtils.random_get_array(lssj);
                G.FightStatusUtils.canel_unit_status(fight_data, jczt, target_unit);
            }

            if (lssj.length > 1 && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "扼命") && G.FightUnitUtils.get_unit_fengyin_status(target_unit)) {
                let lszy = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.relieve_gain_status_ap, 1);
                if (lszy.length > 0) {
                    let jczt = G.RandomUtils.random_get_array(lszy)
                    G.FightStatusUtils.canel_unit_status(fight_data, jczt, target_unit);
                }
            }
            if (index === 0 && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "魂飞")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "魂飞", 11);
            }
        }
    },
    "噬毒": {
        "技能类型": "减益",
        "冷却回合": function (fight_unit) { return 8 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["气血"] > fight_unit["等级"] * 10) {
                return [50, "魔法"];
            }
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["尸腐毒"]) {
                G.FightStatusUtils.canel_unit_status(fight_data, "尸腐毒", target_unit);
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "噬毒", skill_level);
                G.FightComputingUtils.remove_hp_js_and_play(fight_data, src_unit, src_unit, src_unit["等级"] * 10, "噬毒");
            } else {
                let lszy = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.relieve_gain_status_ap);
                if (lszy.length > 0) {
                    let status = G.RandomUtils.random_get_array(lszy);
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, status, target_unit["法术状态"][status]["等级"]);
                }
            }
        }
    },
    "魂飞": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["魂飞"] = {};
            target_unit["法术状态"]["魂飞"]["回合"] = 1;
        },
        "死亡触发": function (fight_data, src_unit, target_unit) {
            let target = target_unit["法术状态"]["魂飞"]["攻击编号"];
            G.FightStatusUtils.add_unit_status(fight_data, G.FightUtils.get_fight_unit_by_number(fight_data, target), target_unit, "锢魂术", 11, 2);
        }
    },
    "魂魇": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["魂魇"] = {};
            target_unit["法术状态"]["魂魇"]["回合"] = 1;
        },
        "追加固定法伤": function (fight_data, src_unit, target_unit, damage) {
            damage -= 100 * src_unit["法术状态"]["魂魇"]["等级"];
        }
    },
    "锢魂术": {
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            if (custom_data) {
                return { "回合": custom_data }
            }
            if (fight_unit["神器"] && fight_unit["神器"]["佩戴"] && fight_unit["神器"]["名称"] === "亡灵泣语") {
                return { "回合": 5, "法防": Math.floor(target_unit["法防"] * 0.1), "防御": Math.floor(target_unit["防御"] * 0.1) }
            }
            return { "回合": 5 };
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let lssj = 0
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["索魂"]) {
                lssj = Math.floor(6 + fight_data["回合"] * 0.1);
            }
            if (G.RandomUtils.chance(65 + lssj)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "锢魂术", skill_level);
            }
        }
    },
    "尸腐毒": {
        // 令对手中“尸毒”，每回合按一定比例掉血
        "技能类型": "固伤",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let damage = Math.floor(target_unit["气血"] * 0.1);
            if (fight_data["PK战斗"]) {
                if (damage > skill_level * 8) {
                    damage = skill_level * 8;
                }
            } else {
                if (damage > skill_level * 13) {
                    damage = skill_level * 13;
                }
            }
            if (target_unit["法术状态"]["百毒不侵"] || target_unit["法术状态"]["尸腐毒"] || target_unit["特殊状态"]["鬼魂术"] || target_unit["特殊状态"]["精神集中"] || target_unit["特殊状态"]["否定信仰"]) {
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 907;
                return false;
            }
            if (G.FightUnitUtils.check_unit_fa_bao(fight_data, src_unit, "九幽")) {
                let friends = G.FightUtils.get_friend_team_group_survive_unit(fight_data, src_unit, 5, "尸腐毒");
                let hp = Math.floor((damage - skill_level + 35) * 0.3);
                hp = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "尸腐毒", hp);
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "幽光")) {
                    hp = hp + 150;
                }
                for (let index = 0; index < friends.length; index++) {
                    let friend = friends[index];
                    G.FightComputingUtils.add_target_hp_and_play(fight_data, friend, hp);
                }
                target_unit["九幽"] = G.FightUnitUtils.get_unit_fa_bao_jingjie(src_unit, "九幽");
            }
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "尸腐毒", skill_level);
            return damage;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["尸腐毒"] = {};
            let hh = 5;
            if (status_level >= 180) {
                hh = 11
            } else if (status_level >= 150) {
                hh = 10
            } else if (status_level >= 120) {
                hh = 9;
            } else if (status_level >= 90) {
                hh = 8;
            } else if (status_level >= 60) {
                hh = 7;
            } else if (status_level >= 30) {
                hh = 6;
            }
            target_unit["法术状态"]["尸腐毒"]["回合"] = hh;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "入骨")) {
                target_unit["法术状态"]["尸腐毒"]["入骨"] = 0.05;
            }
            if (target_unit["九幽"]) {
                let jj = target_unit["九幽"];
                target_unit["法术状态"]["尸腐毒"]["九幽"] = 2;
                target_unit["法术状态"]["尸腐毒"]["恢复气血"] = Math.floor(30 + (1 + jj) * jj / 2);
                target_unit["九幽"] = undefined;
            }
        },
        "取队友": function (fight_data, fight_unit, max_number, team_data) {
            let member_list = [];
            if (G.FightUnitUtils.get_target_unit_status(fight_unit, fight_unit, 1) && fight_unit["法术状态"]["尸腐毒"] === undefined) {
                member_list.push(fight_unit);
            }
            for (let index = 0; index < team_data.length; index++) {
                let element = team_data[index]
                if (element["编号"] !== fight_unit["编号"]
                    && G.FightUnitUtils.get_target_unit_status(fight_unit, element, 1)
                    && element["法术状态"]["尸腐毒"] === undefined) {
                    member_list.push(element);
                }
            }
            return G.FightUtils.hp_order(member_list, max_number);
        },
        "行动前触发": function (fight_data, fight_unit) {
            // 尸腐毒掉血
            let target_number = fight_unit["法术状态"]["尸腐毒"]["攻击编号"];
            let target = G.FightUtils.get_fight_unit_by_number(fight_data, target_number);
            let hp = Math.floor(fight_unit["法术状态"]["尸腐毒"]["等级"] + 10);
            G.FightComputingUtils.remove_hp_and_no_play(fight_data, target, fight_unit, "尸腐毒", hp);
            if (fight_unit["法术状态"]["尸腐毒"]["九幽"]) {
                fight_unit["法术状态"]["尸腐毒"]["九幽"] -= 1;
                if (fight_unit["法术状态"]["尸腐毒"]["九幽"] === 0) {
                    fight_unit["法术状态"]["尸腐毒"]["九幽"] = undefined
                }
                // 尸腐毒九幽加血
                let targets = G.FightUtils.get_friend_team_group_survive_unit(fight_data, target, 5, "尸腐毒");
                for (let index = 0; index < targets.length; index++) {
                    let target = targets[index];
                    G.FightComputingUtils.add_target_hp_and_play(target, hp + fight_unit["法术状态"]["尸腐毒"]["恢复气血"]);
                }
            }
        }
    },
    "黄泉之息": {
        "技能类型": "固伤",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let level = skill_level * 2 + 10;
            let aq = 0;
            let final_ratio = 1;
            let xl_ratio = src_unit["法术修炼"] - target_unit["抗法修炼"];
            if (src_unit["固伤加成"]) {
                final_ratio = src_unit["固伤加成"];
            }
            if (src_unit["暗器"]) {
                aq = src_unit["暗器"];
            }
            let damage = (level + aq + src_unit["固定伤害"]) * final_ratio * (1 + xl_ratio * 0.02) + xl_ratio * 5 + 10;
            let js = Math.floor(level / 10);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "黄泉")) {
                js = Math.floor(js * 1.5);
            }
            target_unit["速度"] = target_unit["速度"] - js;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "泉爆") && G.FightUtils.check_fight_unit_sects_is_single(fight_data, src_unit, "阴曹地府") && src_unit["黄泉之息"] === undefined) {
                damage = damage * 4;
            }
            return Math.floor(damage);
        }
    },
    "修罗隐身": {
        // 使友方目标处于隐身状态
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [150, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "技能类型": 1, "回合": custom_data };
        }
    },
    "无间地狱": {
        // TODO (场地法术)提高双方所有单位受到的伤害，所有阵亡的单位会被附加2回合的“死亡禁锢”，持续3回合
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 10 },
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "金鸦火羽（高级）"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"]) {
                if (fight_data["全局状态"]["无间地狱"]) {
                    fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["全屏"] = true;
                    fight_data["全局状态"]["无间地狱"]["回合"] = 4;
                } else {
                    fight_data["全局状态"]["无间地狱"]["回合"] = 4;
                }
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["无间地狱"] = {};
            target_unit["法术状态"]["无间地狱"]["回合"] = 1;
        }
    },
    "森罗迷瘴": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["森罗迷瘴"] = {};
            target_unit["法术状态"]["森罗迷瘴"]["回合"] = 10;
        }
    },
    "还阳术": {
        // 复活倒地的友方玩家，复活后增加其伤害，降低其防御直至战斗结束。最高增加50%伤害，最高减少50%防御
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (G.FightUnitUtils.is_no_revive(target_unit) || target_unit["类型"] === "bb" || (target_unit["气血上限"] && target_unit["气血上限"] <= 0)) {
                return 0;
            } else {
                return 1;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [150, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            target_unit["死亡"] = undefined;
            let data = Math.floor(skill_level * 4 + 50);
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "还阳术", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["复活"] = true;
            if (target_unit["特殊状态"]["还阳术"] === undefined) {
                target_unit["特殊状态"]["还阳术"] = {};
                target_unit["特殊状态"]["还阳术"]["增伤"] = G.RandomUtils.generate_random(1, 50) * 0.01;
                target_unit["特殊状态"]["还阳术"]["减防"] = G.RandomUtils.generate_random(1, 50) * 0.01;
            }
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            if (src_unit["特殊状态"]["还阳术"]) {
                let value =
                    damage = damage * (1 + src_unit["特殊状态"]["还阳术"]["增伤"]);
            }
            if (target_unit["特殊状态"]["还阳术"]) {
                defense = defense * (1 - target_unit["特殊状态"]["还阳术"]["减防"]);
            }
        },
        "攻击灵力伤害": function (fight_data, src_unit, target_unit, damage, ap_defense) {
            if (src_unit["特殊状态"]["还阳术"]) {
                let value =
                    damage = damage * (1 + src_unit["特殊状态"]["还阳术"]["增伤"]);
            }
        },
        "被攻击灵力伤害": function (fight_data, src_unit, target_unit, damage, ap_defense) {
            if (target_unit["特殊状态"]["还阳术"]) {
                ap_defense = ap_defense * (1 - target_unit["特殊状态"]["还阳术"]["减防"]);
            }
        }
    },
    "幽冥鬼眼": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["通瞑"]) {
                return 1;
            }
            if (skill_level >= 120) {
                return 5;
            } else if (skill_level >= 90) {
                return 4;
            } else if (skill_level >= 60) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [20, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["幽冥鬼眼"] = {};
            let hh = 8;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "幽冥")) {
                hh += 1;
            } else if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "冥视")) {
                target_unit["法术状态"]["幽冥鬼眼"]["冥视"] = 1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "通瞑")) {
                hh += G.FightUtils.get_enemy_ap_status_count(fight_data, src_unit, "尸腐毒")[0];
            }
            target_unit["法术状态"]["幽冥鬼眼"]["回合"] = hh;
        },
        "增益独立算法": function (fight_data, src_unit, target_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "通瞑")) {
                target_unit = src_unit;
            }
        }
    },
    //                    五庄观                    //
    "清风望月": {
        "技能类型": "恢复",
        "冷却回合": function (fight_unit) { return 4 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "愤怒"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.feng_yin_status_ap);
        }
    },
    "日月乾坤": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [35, "魔法"];
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["神迹"] === 2) {
                return false;
            } else {
                let data = G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "日月乾坤", skill_level);
                if (data) {
                    if (G.RandomUtils.chance(60) && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "归本")) {
                        let status = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.fb_gain_status_ap, 1);
                        if (status.length > 0) {
                            G.FightStatusUtils.canel_unit_status(fight_data, G.RandomUtils.random_get_array(status), target_unit);
                        }
                    }
                    if (src_unit["法术状态"]["心随意动"] && src_unit["法术状态"]["心随意动"]["经脉流派"] !== "乾坤力士") {
                        G.FightUnitUtils.set_unit_skill_cd(src_unit, "日月乾坤", 1);
                    }
                }
                return data;
            }
        },
        "命中等级": function (fight_data, src_unit, target_unit, skill_level, mz_level) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "存思") && fight_data["回合"] / 3 === Math.floor(fight_data["回合"] / 3)) {
                return mz_level + 150;
            }
        },
        "命中几率": function (fight_data, src_unit, target_unit, skill_level, mzjl) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "乾坤")) {
                mzjl += 4
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "陌宝")) {
                mzjl += 2
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "玄机") && G.FightStatusUtils.relieve_status(target_unit, G.FightUnitUtils.get_error_ap_status(target_unit), 1).length > 0) {
                mzjl += 5
            }
            if (src_unit["法术状态"]["生命之泉"] && G.FightUnitUtils.check_unit_shen_qi_skill(src_unit, "斗转参横")) {
                mzjl += 4 * src_unit["神器"]["等级"];
            }
            return mzjl;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["日月乾坤"] = {};
            let hh = 1;
            if (status_level >= 125) {
                hh = 5;
            } else if (status_level >= 100) {
                hh = 4;
            } else if (status_level >= 75) {
                hh = 3;
            } else if (status_level >= 45) {
                hh = 2;
            }
            target_unit["法术状态"]["日月乾坤"]["回合"] = hh;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "陌宝")) {
                target_unit["法术状态"]["日月乾坤"]["陌宝"] = 1;
            }
        }
    },
    "天命剑法": {
        // 对其随机发动1~7次物理攻击。使用后下回合不能行动。使用需要气血≥气血上限的70%
        "不可行动": true,
        "技能类型": "物理",
        "冷却回合": function (fight_unit) { return 4 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["气血"] >= fight_unit["最大气血"] * 0.7) {
                return [0, "气血"] //(最大气血的2%×实际攻击次数)点气血
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["天命剑法"] = {};
            target_unit["法术状态"]["天命剑法"]["回合"] = 2;
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 1.1, "叠加伤害": -0.1, "重复提示": false, "连击次数": G.RandomUtils.generate_random(1, 7) };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            let close_hp = Math.floor(attack_count * src_unit["最大气血"] * 0.02);
            let die = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, src_unit, close_hp, "天命剑法");
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾气血"] = die;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾气血"] = close_hp;
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "天命剑法", 11);
        }
    },
    "烟雨剑法": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["气血"] >= fight_unit["最大气血"] * 0.7) {
                return [50, "魔法"];
            };
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let lj_number = 2;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "起雨") && src_unit["骤雨"]["层数"] >= 3) {
                lj_number = 3;
                src_unit["骤雨"]["层数"] = 0;
            }
            return { "返回": false, "重复次数": 1, "起始伤害": 1, "叠加伤害": 0, "重复提示": false, "连击次数": lj_number };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            let lssh = 0;
            if (src_unit["烟雨飘摇"]) {
                lssh = src_unit["烟雨飘摇"];
            }
            damage += lssh;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "雨杀") && attack_number === 2 && target_unit["类型"] !== "角色") {
                src_unit["雨杀"] = 1;
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "骤雨")) {
                let sx = 3;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "滂沱")) {
                    sx = 5;
                }
                if (src_unit["骤雨"]["层数"] < sx) {
                    src_unit["骤雨"]["层数"] = src_unit["骤雨"]["层数"] + 1;
                }
                src_unit["骤雨"].回合 = 3;
            }
        }
    },
    "飘渺式": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (fight_data["PK战斗"]) {
                return 1;
            }
            if (skill_level >= 60) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * attack_number, "魔法"];
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            let lssh = 0;
            if (src_unit["烟雨飘摇"]) {
                lssh = src_unit["烟雨飘摇"];
            }
            damage += lssh;
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        }
    },
    "金击式": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 60) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * attack_number, "魔法"];
        }
    },
    "敲金击玉": {
        "技能类型": "物理",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 1;
            let jc = 0.3;
            if (src_unit["道果"]) {
                jc = 0.2;
            } else if (src_unit["饮露"]) {
                jc = 0.34;
            }
            start_damage = 1 + src_unit["人参果"]["枚"] * jc;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "木摧")) {
                start_damage = start_damage * 1.05;
            }
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "刺果") && target_unit["认证码"]) {
                damage = damage * 1.2;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "还元") && src_unit["人参果"]["枚"] >= 3) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "还元", 11);
            }
            G.FightUnitUtils.add_ren_shen_guo(src_unit);
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        }
    },
    "落土止息": {
        // 发动一次猛烈的攻击，你的人参娃娃会与你一同攻击，且额外造成的伤害翻倍。使用后临时降低防御与法防，所有人参娃娃消失，你休息1回合
        "不可行动": true,
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法和气血"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 2, "防御": Math.floor(target_unit["防御"] * 0.1), "法防": Math.floor(target_unit["法防"] * 0.1) };
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 1;
            let jc = 0.3;
            if (src_unit["道果"]) {
                jc = 0.2;
            } else if (src_unit["饮露"]) {
                jc = 0.34;
            }
            start_damage = 1 + src_unit["人参果"]["枚"] * jc * 2;
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            src_unit["人参果"] = { "枚": 0, "回合": 4 };
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "落土止息", 69);
        }
    },
    "同伤式": {
        "技能类型": "物理",
        "冷却回合": function (fight_unit) { return 6 },
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "金鸦火羽（高级）"];
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            let speed = Math.abs(src_unit["速度"] - target_unit["速度"]);
            if (speed < 1) { speed = 0 }
            G.FightStatusUtils.relieve_status(fight_data, src_unit, G.Skill.gain_status_ap);
            damage = speed * 3 + damage;
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        },
        "物理连击触发": function (fight_data, src_unit, target_unit, target_list, attack_number) {
            if (attack_number === 1) {
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["战斗法术"] = "同伤式";
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["寄存目标"] = target_list.map(e => e["编号"]);
            }
        }
    },
    "驱魔": {
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [45, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.sects_fengyin_ap["方寸山"]);
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "驱魔", skill_level);
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["驱魔"] = {};
            target_unit["法术状态"]["驱魔"]["回合"] = 4;
        }
    },
    "驱尸": {
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.relieve_status(fight_data, target_unit, ["尸腐毒", "毒", "雾杀"]);
        }
    },
    "天地同寿": {
        // 为我方单个目标加上一个防御护罩，吸收全部法术伤害，但降低其一半的防御，同时承受的物理伤害增加，持续4回合。
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["天地同寿"] = {};
            let hh = 3;
            if (status_level >= 150) {
                hh = 4;
            }
            // 天地同寿持续回合数增加2，但是被玩家单位攻击时额外降低15%防御。
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "同辉")) {
                hh += 2
                target_unit["法术状态"]["天地同寿"]["同辉"] = 1;
            }
            target_unit["法术状态"]["天地同寿"]["回合"] = hh;
            target_unit["法术状态"]["天地同寿"]["防御"] = Math.floor(target_unit["防御"] * 0.5) * -1;
        },
        "被攻击基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            if (src_unit["类型"] === "角色" && target_unit["法术状态"]["天地同寿"]["同辉"]) {
                defense = defense * (1 - 0.15);
            }
        }
    },
    "心随意动": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            if (src_unit["法术状态"]["心随意动"]) {
                G.FightStatusUtils.canel_unit_status(fight_data, "心随意动", src_unit);
                return false;
            }
            target_unit["法术状态"]["心随意动"] = {};
            target_unit["法术状态"]["心随意动"]["回合"] = 8;
            target_unit["法术状态"]["心随意动"]["经脉流派"] = src_unit["奇经八脉"]["当前流派"]
            if (src_unit["奇经八脉"]["当前流派"] === "乾坤力士") {
                target_unit["法术状态"]["心随意动"]["伤害"] = Math.floor(G.FightUnitUtils.get_unit_skill_level(src_unit, "七星遁") * 2.2);
            } else {
                target_unit["法术状态"]["心随意动"]["封印等级"] = Math.floor(G.FightUnitUtils.get_unit_skill_level(src_unit, "七星遁") * 2.2);
            }
        }
    },
    "乾坤妙法": {
        // 使友方单个目标不受任何伤害，但也无法行动，持续3回合。
        "不可行动": true,
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 3;
            if (skill_level >= 150) {
                hh = 4;
            }
            return { "回合": hh };
        }
    },
    "炼气化神": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["气血"] > 30) {
                return [30, "气血"];
            }
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"]) {
                let hp = 30;
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾死亡"] = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, src_unit, hp, "炼气化神");
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾气血"] = hp;
            } else {
                G.FightUnitUtils.add_unit_mp(target_unit, skill_level);
                return false;
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["炼气化神"] = {};
            target_unit["法术状态"]["炼气化神"]["恢复魔法"] = status_level;
            let hh = 12;
            if (status_level >= 160) {
                hh = 16;
            } else if (status_level >= 120) {
                hh = 15;
            } else if (status_level >= 80) {
                hh = 14;
            } else if (status_level >= 40) {
                hh = 13;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "行气") && target_unit["编号"] === src_unit["编号"]) {
                hh += 3;
            }
            target_unit["法术状态"]["炼气化神"]["回合"] = hh;
        },
        "行动前触发": function (fight_data, fight_unit) {
            // 行动前炼气化神回蓝
            G.FightUnitUtils.add_unit_mp(fight_unit, Math.floor(fight_unit["法术状态"]["炼气化神"]["恢复魔法"]));
        }
    },
    "生命之泉": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 180) {
                return 7;
            } else if (skill_level >= 150) {
                return 6;
            } else if (skill_level >= 120) {
                return 5;
            } else if (skill_level >= 90) {
                return 4;
            } else if (skill_level >= 60) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * attack_number, "魔法"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["生命之泉"] === undefined) {
                let hp = skill_level + 100;
                hp = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "生命之泉", hp);
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "运转")) {
                    hp = Math.floor(hp * 1.3);
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "体恤") && target_unit["气血"] <= target_unit["最大气血"] * 0.3) {
                    hp += 150;
                }
                G.FightUnitUtils.add_unit_hp(target_unit, hp);
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = hp;
                return true;
            }
            return false;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["生命之泉"] = {};
            target_unit["法术状态"]["生命之泉"]["恢复气血"] = Math.floor(status_level + 150);
            let hh = 12;
            if (status_level >= 120) {
                hh = 17;
            } else if (status_level >= 100) {
                hh = 16;
            } else if (status_level >= 80) {
                hh = 15;
            } else if (status_level >= 60) {
                hh = 14;
            } else if (status_level >= 40) {
                hh = 13;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "运转")) {
                hh = hh - 3;
                target_unit["法术状态"]["生命之泉"]["运转"] = 1;
            }
            target_unit["法术状态"]["生命之泉"]["回合"] = hh;
            target_unit["法术状态"]["生命之泉"]["体恤"] = 0;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "体恤")) {
                target_unit["法术状态"]["生命之泉"]["体恤"] = 150;
            }
        },
        "持续回血": function (fight_data, src_unit, target_unit, hp) {
            hp = Math.floor(hp + src_unit["治疗能力"] + src_unit["法术修炼"] * 3 + target_unit["气血回复效果"]);
            if (target_unit["法术状态"]["生命之泉"] && target_unit["法术状态"]["生命之泉"]["运转"]) {
                hp = Math.floor(hp * 1.3);
            }
            if (target_unit["气血"] <= target_unit["最大气血"] * 0.3) {
                hp += target_unit["法术状态"]["生命之泉"]["体恤"];
            }
            return hp;
        },
        "行动前触发": function (fight_data, fight_unit) {
            // 行动前生命之泉持续回血
            let number = fight_unit["法术状态"]["生命之泉"]["攻击编号"];
            let add_unit = G.FightUtils.get_fight_unit_by_number(fight_data, number);
            G.FightComputingUtils.add_target_hp_by_ap_status(fight_data, add_unit, fight_unit, fight_unit["法术状态"]["生命之泉"]["恢复气血"], "生命之泉");
        }
    },
    "疯狂": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 5 };
        },
        "行动前触发": function (fight_data, fight_unit) {
            if (fight_unit["指令"]["类型"] !== "防御") {
                fight_unit["指令"]["类型"] = "攻击";
                // 胡乱普通攻击地方单位
                let target = G.FightUtils.get_enemy_team_single_survive_unit(fight_data, fight_unit);
                fight_unit["指令"]["目标"] = target !== undefined ? target["编号"] : undefined;
            }
        }
    },
    "还元": {
        "不可驱散": true,
        "层数上限": 99,
        "刷新回合": 2,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 2, "层数": 1 };
        }
    },
    //                    无底洞                    //
    "绝处逢生": {
        "技能类型": "恢复",
        "冷却回合": function (fight_unit) { return 10 },
        "指定对象": "自己",
        "不可驱散": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 3, "速度": Math.floor(target_unit["速度"] * 0.1) };
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let data = Math.floor((src_unit["最大气血"] - src_unit["气血"]) * 0.5);
            let sx = Math.floor((src_unit["最大气血"] - src_unit["气血上限"]) * 0.5);
            src_unit["气血上限"] = src_unit["气血上限"] + sx;
            data = Math.floor(data + src_unit["气血回复效果"]);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "绝处逢生", 11);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        }
    },
    "噬魂": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["噬魂"] = {};
            target_unit["法术状态"]["噬魂"]["回合"] = 1;
        },
        "攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * 1.1;
        }
    },
    "陷阱": {
        "技能类型": "经脉",
        // 你的夺魄令被解除时,目标当前回合减少(阴风绝章等级×1.5)的物法伤害;
        // 同时使你下次地涌金莲额外作用1个单位，但效果仅为70%。(可叠加7层，不可驱散)
        "层数上限": 7,
        "不可驱散": true,
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["陷阱"] = {};
            target_unit["法术状态"]["陷阱"]["回合"] = 999;
            target_unit["法术状态"]["陷阱"]["开始回合"] = fight_data["回合"];
            target_unit["法术状态"]["陷阱"]["层数"] = 1;
            target_unit["法术状态"]["陷阱"]["地涌金莲"] = 0.7;
            target_unit["法术状态"]["陷阱"]["额外目标"] = 1;
            target_unit["法术状态"]["陷阱"]["减伤"] = Math.floor(G.FightUnitUtils.get_unit_skill_level(src_unit, "阴风绝章") * 1.5);
        },
        "攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            if (target_unit["法术状态"]["陷阱"]["开始回合"] === fight_data["回合"]) {
                damage -= target_unit["法术状态"]["陷阱"]["减伤"];
            }
        }
    },
    "同舟共济": {
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 4 },
        "不可驱散": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [200, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            target_unit["法术状态"]["同舟共济"]["次数"] = 6
            return { "回合": 1 };
        },
        "增益独立算法": function (fight_data, src_unit, target_unit) {
            if (target_unit["编号"] === src_unit["编号"]) {
                target_unit = G.FightUtils.get_friend_team_single_survive_unit(fight_data, src_unit);
            }
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            if (target_unit["法术状态"]["同舟共济"]["次数"] > 0) {
                let target_number = target_unit["法术状态"]["同舟共济"]["攻击编号"];
                let target = G.FightUtils.get_fight_unit_by_number(fight_data, target_number);
                if (target["气血"] > 0) {
                    damage = Math.floor(damage * 0.25);
                    target_unit["法术状态"]["同舟共济"]["次数"] -= 1;
                    G.FightComputingUtils.remove_hp_js_and_play(fight_data, src_unit, target, damage);
                }
            }
        }
    },
    "荡魔": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 2 };
        },
        "攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * 1.12;
        }
    },
    "移魂化骨": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["气血"] >= fight_unit["最大气血"] * 0.3) {
                return [0.1, "气血"];
            }
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"]) {
                let hp = Math.floor(src_unit["最大气血"] * 0.1);
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾死亡"] = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, src_unit, hp, "移魂化骨");
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾气血"] = hp;
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["移魂化骨"] = {};
            let hh = 6;
            if (status_level >= 150) {
                hh = 9;
            } else if (status_level >= 100) {
                hh = 8;
            } else if (status_level >= 50) {
                hh = 7;
            }
            target_unit["法术状态"]["移魂化骨"]["回合"] = hh;
            target_unit["法术状态"]["移魂化骨"]["吸血"] = Math.floor(status_level / 1000 + 0.05);
        }
    },
    "夺魄令": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["无穷妙道"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "夺魄令", skill_level);
            }
        },
        "命中等级": function (fight_data, src_unit, target_unit, skill_level, mz_level) {
            if (src_unit["法术状态"]["燃血术"] && src_unit["法术状态"]["燃血术"]["椎骨"]) {
                return mz_level + 120;
            }
            return mz_level;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["夺魄令"] = {};
            let hh = 1;
            if (status_level >= 125) {
                hh = 6;
            } else if (status_level >= 100) {
                hh = 5;
            } else if (status_level >= 75) {
                hh = 4;
            } else if (status_level >= 45) {
                hh = 3;
            } else if (status_level >= 25) {
                hh = 2;
            }
            target_unit["法术状态"]["夺魄令"]["回合"] = hh;
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "缚魂") && !fight_data["PK战斗"]) {
                target_unit["法术状态"]["夺魄令"]["封物理"] = true;
            }
        },
        "取消状态": function (fight_data, fight_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "无底洞", "陷阱")) {
                G.FightStatusUtils.add_unit_status(fight_data, fight_unit, fight_unit, "陷阱", 1);
            }
        }
    },
    "妖风四起": {
        "技能类型": "单封",
        "冷却回合": function (fight_unit) { return 4 },
        "不可驱散": true, //不能被 晶清等解除
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["气血"] > fight_unit["最大气血"] * 0.4) {
                return [100, "魔法"];
            }

        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["气血"] > 1) {
                let close_hp = Math.floor(src_unit["气血"] * 0.4);
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾死亡"] = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, target_unit, close_hp, "妖风四起");
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾气血"] = close_hp;
            }
            if (target_unit["法术状态"]["无穷妙道"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "妖风四起", skill_level);
            }
        },
        "命中几率": function (fight_data, src_unit, target_unit, skill_level, mzjl) {
            return mzjl += 40;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["妖风四起"] = {};
            target_unit["法术状态"]["妖风四起"]["回合"] = 2;
        }
    },
    "煞气诀": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["无穷妙道"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "煞气诀", skill_level);
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["煞气诀"] = {};
            target_unit["法术状态"]["煞气诀"]["回合"] = 2;
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = Math.floor(damage * 0.5);
        }
    },
    "惊魂掌": {
        "技能类型": "单封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 3;
            if (skill_level >= 150) {
                hh = 5;
            } else if (skill_level >= 100) {
                hh = 4;
            }
            if (fight_unit["奇经八脉"] && fight_unit["奇经八脉"]["持戒"]) {
                hh = 2;
            }
            return { "回合": hh };
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["无穷妙道"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "惊魂掌", skill_level);
            }
        },
        "封印等级": function (fight_data, src_unit, target_unit, skill_level, fy_level) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "持戒")) {
                return fy_level * 3;
            }
            return fy_level;
        }
    },
    "摧心术": {
        "技能类型": "群封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 2
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 3, "速度": Math.floor(skill_level / 2) };
        },
        "封印算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["无穷妙道"]) {
                return false;
            } else {
                return G.FightSealSkillUtils.computing_fengyin_mz(fight_data, src_unit, target_unit, "摧心术", skill_level);
            }
        }
    },
    "夺命咒": {
        "技能类型": "固伤",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (fight_data["PK战斗"]) {
                return 1;
            }
            if (skill_level >= 140) {
                return 5;
            } else if (skill_level >= 105) {
                return 4;
            } else if (skill_level >= 70) {
                return 3;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [20 * attack_number, "魔法"];
        },
        "固伤攻击前触发": function (fight_data, src_unit, target_unit, skill_level) {
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "裂魂") && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "余咒") && G.RandomUtils.chance(4)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "裂魂", 1);
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "纠缠")) {
                    G.FightUnitUtils.add_fen_nu(src_unit, 4);
                }
            }
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let level = skill_level + src_unit["固定伤害"] + 120;
            let mj = (src_unit["敏捷"] + src_unit["装备敏捷"]) * 0.7;
            let aq = 0;
            let fl_ratio = 1 - target_list.length * 0.1;
            if (fl_ratio <= 0.6) {
                fl_ratio = 0.6;
            }
            let final_ratio = 1;
            let xl_ratio = src_unit["法术修炼"] - target_unit["抗法修炼"];
            if (src_unit["固伤加成"]) {
                final_ratio = src_unit["固伤加成"];
            }
            if (src_unit["法术状态"]["燃血术"]) {
                if (src_unit["法术状态"]["燃血术"]["层数"] > 1) {
                    src_unit["法术状态"]["燃血术"]["层数"] = src_unit["法术状态"]["燃血术"]["层数"] - 1 / target_list.length;
                } else {
                    G.FightStatusUtils.canel_unit_status(fight_data, "燃血术", src_unit);
                }
            }
            if (src_unit["暗器"]) {
                aq = src_unit["暗器"];
            }
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["当前流派"] === "幽冥巫煞") {
                level = level * 2;
            }
            let damage = (skill_level + aq + mj) * fl_ratio * final_ratio * (1 + xl_ratio * 0.02) + 27//+神木符+固伤符石
            if (src_unit["法术状态"]["裂魂"]) {
                damage += G.RandomUtils.generate_random(100, 500);
            }
            if (src_unit["法术状态"]["裂魂"] && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "魂守")) {
                damage = damage * 1.08;
            }
            if (src_unit["法术状态"]["裂魂"] && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "羽裂")) {
                damage = damage * 1.05;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "夺血")) {
                damage += fight_data["回合"] * 4;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "冥煞") && G.RandomUtils.chance(5)) {
                damage = damage * 2;
            }
            if (!fight_data["PK战斗"]) {
                if (index === 0) {
                    damage = (damage + src_unit["装备伤害"] * 0.78);
                } else {
                    damage = (damage + src_unit["装备伤害"] * 0.278);
                }
                if (src_unit["销魂噬骨"]) {
                    damage += src_unit["销魂噬骨"];
                }
            }
            if (fight_data["PK战斗"]) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "灵变")) {
                    damage += 50;
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "深刻") && !(fight_data["回合"] / 2 === Math.floor(fight_data["回合"] / 2))) {
                    damage += 70;
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "聚魂")) {
                    damage = damage * 1.08;
                }
                return Math.floor(damage * 0.5);
            }
            return Math.floor(damage)
        }
    },
    "明光宝烛": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["救人"]) {
                return 1;
            }
            if (skill_level >= 175) {
                return 7;
            } else if (skill_level >= 150) {
                return 6;
            } else if (skill_level >= 125) {
                return 5;
            } else if (skill_level >= 100) {
                return 4;
            } else if (skill_level >= 75) {
                return 3;
            } else if (skill_level >= 50) {
                return 2;
            } else {
                return 1;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["明光宝烛"] = {};
            let hh = 2
            if (status_level >= 160) {
                hh = 16;
            } else if (status_level >= 120) {
                hh = 15;
            } else if (status_level >= 80) {
                hh = 14;
            } else if (status_level >= 40) {
                hh = 13;
            }
            target_unit["法术状态"]["明光宝烛"]["加防"] = status_level + 15;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "救人")) {
                target_unit["法术状态"]["明光宝烛"]["加防"] = Math.floor(target_unit["法术状态"]["明光宝烛"]["加防"] * 1.6);
                target_unit["法术状态"]["明光宝烛"]["救人"] = 1;
                hh = hh - 1;
            }
            target_unit["法术状态"]["明光宝烛"]["回合"] = hh;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "精进")) {
                target_unit["法术状态"]["明光宝烛"]["加防"] = Math.floor(target_unit["法术状态"]["明光宝烛"]["加防"] * 2);
                target_unit["法术状态"]["明光宝烛"]["递减名称"] = "加防";
                target_unit["法术状态"]["明光宝烛"]["回合递减"] = Math.floor(target_unit["法术状态"]["明光宝烛"]["加防"] * 0.4);
                if (!fight_data["PK战斗"]) {
                    target_unit["法术状态"]["明光宝烛"]["加防"] = Math.floor(target_unit["法术状态"]["明光宝烛"]["加防"] * 1.5);
                    target_unit["法术状态"]["明光宝烛"]["回合递减"] = Math.floor(target_unit["法术状态"]["明光宝烛"]["加防"] * 0.1);
                }
            }
        },
        "被攻击物伤结果": function (fight_data, src_unit, target_unit, damage) {
            damage -= target_unit["法术状态"]["明光宝烛"]["加防"];
        }
    },
    "金身舍利": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["救人"]) {
                return 1;
            }
            if (skill_level >= 175) {
                return 7;
            } else if (skill_level >= 150) {
                return 6;
            } else if (skill_level >= 125) {
                return 5;
            } else if (skill_level >= 120) {
                return 4;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["金身舍利"] = {};
            let hh = 12;
            if (status_level >= 160) {
                hh = 13;
            }
            target_unit["法术状态"]["金身舍利"]["回合"] = hh;
            target_unit["法术状态"]["金身舍利"]["加防"] = status_level;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "救人")) {
                target_unit["法术状态"]["金身舍利"]["加防"] = Math.floor(target_unit["法术状态"]["金身舍利"]["加防"] * 1.6);
                target_unit["法术状态"]["金身舍利"]["救人"] = 1;
                hh = hh - 1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "精进")) {
                target_unit["法术状态"]["金身舍利"]["加防"] = Math.floor(target_unit["法术状态"]["金身舍利"]["加防"] * 2);
                target_unit["法术状态"]["金身舍利"]["递减名称"] = "加防";
                target_unit["法术状态"]["金身舍利"]["回合递减"] = Math.floor(target_unit["法术状态"]["金身舍利"]["加防"] * 0.4);
                if (!fight_data["PK战斗"]) {
                    target_unit["法术状态"]["金身舍利"]["加防"] = Math.floor(target_unit["法术状态"]["金身舍利"]["加防"] * 1.5);
                    target_unit["法术状态"]["金身舍利"]["回合递减"] = Math.floor(target_unit["法术状态"]["金身舍利"]["加防"] * 0.1);
                }
            }
        },
        "被攻击法伤结果": function (fight_data, src_unit, target_unit, damage) {
            damage -= target_unit["法术状态"]["金身舍利"]["加防"];
        }
    },
    "净土灵华": {
        "技能类型": "恢复",
        "冷却回合": function (fight_unit) { return 6 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "金鸦火羽（高级）"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let data = (skill_level * 4 + 91) * 2 + Math.floor(src_unit["装备伤害"] / 15);
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "净土灵华", data)
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            if (target_unit["气血上限"]) {
                target_unit["气血上限"] = target_unit["最大气血"];
            }
            if (src_unit["净土灵华"] === undefined) {
                src_unit["净土灵华"] = 0
            }
            src_unit["净土灵华"] += 0.07;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        }
    },
    "地涌金莲": {
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let target_count = 2;
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "金莲")) {
                if (skill_level >= 45) {
                    target_count += 1;
                } else if (skill_level >= 105) {
                    target_count += 2;
                }
            }
            if (src_unit["法术状态"]["燃血术"] && src_unit["法术状态"]["燃血术"]["华光"]) {
                target_count += 1;
            }
            if (src_unit["法术状态"]["陷阱"]) {
                target_count += src_unit["法术状态"]["陷阱"]["额外目标"];
            }
            return target_count;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["气血"] > 50) {
                return [50, "气血"];
            };
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            //附加
            let fj;

            if (src_unit["法术状态"]["燃血术"]) {
                fj = 1
                if (src_unit["法术状态"]["燃血术"]["强化"]) {
                    fj = 2;
                }
                if (src_unit["法术状态"]["燃血术"]["层数"] > 1) {
                    src_unit["法术状态"]["燃血术"]["层数"] -= 1;
                } else {
                    G.FightStatusUtils.canel_unit_status(fight_data, "燃血术", src_unit);
                }
            }
            let heals = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "地涌金莲", data);
            if (src_unit["法术状态"]["陷阱"]) {
                heals = heals * src_unit["法术状态"]["陷阱"]["减伤"];
            }
            G.FightUnitUtils.add_unit_hp(target_unit, heals);
            if (target_unit["气血上限"]) {
                let max_hp = heals * 0.1;
                target_unit["气血上限"] += Math.floor(max_hp);
                if (target_unit["气血上限"] > target_unit["最大气血"]) {
                    target_unit["气血上限"] = target_unit["最大气血"];
                }
            }
        },
        "取队友": function (fight_data, fight_unit, max_number, team_data) {
            let member_list = [];
            if (G.FightUnitUtils.get_target_unit_status(fight_unit, fight_unit, 1) && fight_unit["法术状态"]["地涌金莲"] === undefined) {
                member_list.push(fight_unit);
            }
            for (let index = 0; index < team_data.length; index++) {
                let element = team_data[index]
                if (element["编号"] !== fight_unit["编号"]
                    && element["法术状态"]["地涌金莲"] === undefined
                    && G.FightUnitUtils.get_target_unit_status(fight_unit, element, 1)
                    && G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "无底洞", "救人")
                    && (element["法术状态"]["明光宝烛"] || element["法术状态"]["金身舍利"])) {
                    member_list.push(element);
                }
            }
            return G.FightUtils.hp_order(member_list, max_number);
        }
    },
    "由己渡人": {
        "技能类型": "恢复",
        // "指定对象":"自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (G.FightUnitUtils.is_no_revive(target_unit) || target_unit["类型"] === "bb" || (target_unit["气血上限"] && target_unit["气血上限"] <= 0)) {
                return 0;
            } else {
                return 1;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["气血"] > fight_unit["最大气血"] * 0.1) {
                return [50, "气血"];
            };
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let dx = Math.floor(src_unit["气血"] * 0.1);
            if (src_unit["气血"] > dx) {
                src_unit["气血"] = src_unit["气血"] - dx;
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["扣除气血"] = dx;
                let heals = Math.floor(G.FightUnitUtils.get_unit_skill_level(src_unit, "地冥妙法") * 6);
                heals = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "由己渡人", heals);
                G.FightUnitUtils.add_unit_hp(target_unit, heals);
                G.FightUnitUtils.add_hu_dun_for_lt_hp(fight_data, target_unit, G.FightUnitUtils.get_unit_skill_level(src_unit, "地冥妙法") * 4);
                target_unit["死亡"] = undefined;
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = heals;
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["复活"] = true;
                if (target_unit["气血上限"]) {
                    let max_hp = heals * 2;
                    target_unit["气血上限"] += Math.floor(max_hp);
                    if (target_unit["气血上限"] > target_unit["最大气血"]) {
                        target_unit["气血上限"] = target_unit["最大气血"];
                    }
                }
            }
        }
    },
    "追魂刺": {
        "技能类型": "固伤",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "无底洞", "弥愤")) {
                return [[50, 0], "魔法和愤怒"];
            } else {
                return [[50, 20], "魔法和愤怒"];
            }
        },
        "固伤攻击前触发": function (fight_data, src_unit, target_unit, skill_level) {
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "裂魂") && !G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "分魄") && G.RandomUtils.chance(15)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "裂魂", 1);
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "纠缠")) {
                    G.FightUnitUtils.add_fen_nu(src_unit, 4);
                }
            }
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "裂魂") && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "分魄") && src_unit["法术状态"]["燃血术"] && G.RandomUtils.chance(27)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "裂魂", 1);
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "纠缠")) {
                    G.FightUnitUtils.add_fen_nu(src_unit, 4);
                }
            }
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let level = G.FightUnitUtils.get_unit_skill_level(src_unit, "追魂刺") * 3 + 20;
            let mj = (src_unit["敏捷"] + src_unit["装备敏捷"]) * 0.7
            let aq = 0;
            let fl_ratio = 1 - target_list.length * 0.1;
            if (fl_ratio <= 0.6) {
                fl_ratio = 0.6
            }
            let final_ratio = 1
            let xl_ratio = src_unit["法术修炼"] - target_unit["抗法修炼"];
            if (src_unit["奇经八脉"] && src_unit["奇经八脉"]["当前流派"] === "幽冥巫煞") {
                level = level * 2;
            }
            if (src_unit["固伤加成"]) {
                final_ratio = src_unit["固伤加成"];
            }
            if (src_unit["暗器"]) {
                aq = src_unit["暗器"];
            }
            if (src_unit["法术状态"]["燃血术"]) {
                if (src_unit["法术状态"]["燃血术"]["层数"] > 1) {
                    src_unit["法术状态"]["燃血术"]["层数"] = src_unit["法术状态"]["燃血术"]["层数"] - 1
                } else {
                    G.FightStatusUtils.canel_unit_status(fight_data, "燃血术", src_unit)
                }
            }
            let damage = (level + aq + mj) * fl_ratio * final_ratio * (1 + xl_ratio * 0.02) + 27//+神木符+固伤符石
            if (target_unit["类型"] === "角色" && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "刺骨")) {
                damage = damage * 1.12
            }
            if (target_unit["类型"] === "bb" && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "鬼袭")) {
                damage = damage * 1.5;
            }
            if (src_unit["法术状态"]["裂魂"]) {
                damage += G.RandomUtils.generate_random(200, 300);
            }
            if (src_unit["法术状态"]["裂魂"] && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "魂守")) {
                damage = damage * 1.08;
            }
            if (src_unit["法术状态"]["裂魂"] && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "羽裂")) {
                damage = damage * 1.05;
            }
            if (src_unit["法术状态"]["燃血术"]) {
                damage = damage * 1.6;
            }
            if (G.FightUtils.check_fight_unit_sects_is_single(fight_data, src_unit, "无底洞") && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "独一") && G.RandomUtils.chance(10)) {
                damage = 999999;
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["挨打方"][index]["无穷"] = true;
            }
            if (!fight_data["PK战斗"]) {
                if (index === 0) {
                    damage += src_unit["装备伤害"] * 0.78;
                } else {
                    damage += src_unit["装备伤害"] * 0.278;
                }
            }
            if (fight_data["PK战斗"]) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "灵变")) {
                    damage += 50;
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "深刻") && fight_data["回合"] / 2 === Math.floor(fight_data["回合"] / 2)) {
                    damage += 70;
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "聚魂")) {
                    damage = damage * 1.08;
                }
                return Math.floor(damage * 0.5);
            }
            return Math.floor(damage);
        }
    },
    "燃血术": {
        // 消耗气血，强化你的下一个技能。
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 175) {
                return 8;
            } else if (skill_level >= 150) {
                return 8;
            } else if (skill_level >= 125) {
                return 8;
            }
            return 4
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["奇经八脉"] && fight_unit["奇经八脉"]["盛怒"]) {
                return [0, "气血"];
            } else {
                if (fight_unit["气血"] >= fight_unit["最大气血"] * 0.5) {
                    return [50, "气血"];
                }
            }
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"]) {
                let hp = Math.floor(src_unit["气血"] * 0.1)
                let qit = Math.floor(src_unit["气血上限"] - src_unit["气血上限"] * 0.1)
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "血潮")) {
                    hp = hp * 2;
                    qit = qit * 2;
                }
                src_unit["气血上限"] = qit
                if (src_unit["气血上限"] < 0) {
                    src_unit["气血上限"] = 0;
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "盛怒")) {
                    G.FightUnitUtils.add_fen_nu(src_unit, 20);
                }
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾死亡"] = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, src_unit, hp, "燃血术");
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾气血"] = hp;
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["燃血术"] = {};
            target_unit["法术状态"]["燃血术"]["回合"] = 999;
            target_unit["法术状态"]["燃血术"]["层数"] = 1;
            if (custom_data) {
                target_unit["法术状态"]["燃血术"]["强化"] = 1
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "血潮")) {
                target_unit["法术状态"]["燃血术"]["层数"] = 2;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "华光")) {
                target_unit["法术状态"]["燃血术"]["华光"] = 1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "椎骨")) {
                target_unit["法术状态"]["燃血术"]["椎骨"] = 1;
            }
        }
    },
    "化羽为血": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "金鸦火羽（高级）"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"]) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "燃血术", skill_level, 11);
            }
            return false;
        }
    },

    //                    凌波城                    //
    "天神怒斩": {
        "技能类型": "物理",
        "冷却回合": function (fight_unit) { return 10 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [300, "魔法"];
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            defense = defense * (1 - 0.25);
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            return { "伤害": damage, "必杀几率": 25, "暴击倍率": 2, "浮空概率": 0 };
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 1;
            if (src_unit["天神怒斩"] === undefined) {
                src_unit["天神怒斩"] = 0;
            }
            if (src_unit["战意"] !== 1) {
                src_unit["天神怒斩"] = src_unit["天神怒斩"] + 0.25;
            } else {
                src_unit["天神怒斩"] = src_unit["天神怒斩"] + 0.5;
            }
            start_damage = start_damage * (1 + src_unit["天神怒斩"])
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            let fyjn = G.FightStatusUtils.relieve_status(fight_data, target_list[0], G.Skill.relieve_gain_status_ap);
            if (fyjn.length > 0) {
                G.FightStatusUtils.canel_unit_status(fight_data, G.RandomUtils.random_get_array(fyjn), target_list[0]);
            }
        }
    },
    "裂石": {
        "技能类型": "物理",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "吞山")) {
                src_unit["附加必杀几率"] = 5;
            }
            return { "返回": false, "重复次数": 1, "起始伤害": 1, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            G.FightUnitUtils.add_zhan_yi(src_unit, 1);
        }
    },
    "浪涌": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 70) {
                return 3;
            } else if (skill_level >= 35) {
                return 2;
            } else {
                return 1;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [20 * attack_number + 10, "魔法"];
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "饮海")) {
                defense = defense * 0.9;
            }
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 0.75;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "战诀") && !fight_data["PK战斗"]) {
                start_damage = 0.85;
            } else {
                G.FightUnitUtils.add_zhan_yi(src_unit, 1);
            }
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            if (!G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "战诀")) {
                G.FightUnitUtils.add_zhan_yi(src_unit, 1)
            }
        }
    },
    "断岳势": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [attack_number, "战意"];
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "煞气")) {
                damage += 300;
            }
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 1;
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "吞山")) {
                src_unit["附加必杀几率"] = src_unit["附加必杀几率"] + 5;
            }
            if (src_unit["法术状态"]["再战"]) { //相乘切记
                start_damage = start_damage * 1.15;
            }
            if (src_unit["超级战意"] >= 1) {
                src_unit["超级战意"] = src_unit["超级战意"] - 1;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "乘势")) {
                    src_unit["乘势"] = 1;
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "妙得")) {
                    src_unit["附加必杀几率"] = src_unit["附加必杀几率"] + 20;
                } else {
                    start_damage = start_damage * 1.2
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "惊涛")) {
                        let num = 0;
                        if (G.FightUnitUtils.get_unit_equipment_wx(src_unit, 2) === "水") { //武器
                            num = num + 0.04;
                        }
                        if (G.FightUnitUtils.get_unit_equipment_wx(src_unit, 3) === "水") { //衣服
                            num = num + 0.04;
                        }
                        start_damage = start_damage * (1 + num);
                    }
                }
            }
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": -0.2, "重复提示": false, "连击次数": 2 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            if (src_unit["法术状态"]["再战"]) {
                G.FightStatusUtils.canel_unit_status(fight_data, "再战", src_unit);
            }
            if (src_unit["乘势"]) {
                src_unit["乘势"] = undefined;
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "强袭", 11)
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "追袭")) {
                    target_list[0]
                    for (let index = 0; index < target_list.length; index++) {
                        if (target_list[index]["气血"] <= 0) {
                            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_list[index], "腾雷", 11);
                        }
                    }

                }
            }
        },
        "击杀触发": function (fight_data, src_unit, target_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "再战") && src_unit["法术状态"]["再战"]) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "再战", 11);
            }
        }
    },
    "天崩地裂": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [attack_number, "战意"];
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "力战")) {
                defense = defense * (1 - 0.12);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "煞气")) {
                damage += 300;
            }
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            let bsjl = 0;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "无双")) {
                bsjl += 15;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "力战")) {
                damage = damage * 1.12;
            }
            return { "伤害": damage, "必杀几率": bsjl, "暴击倍率": 2, "浮空概率": 0 };
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "吞山")) {
                src_unit["附加必杀几率"] = 5;
            }
            if (src_unit["天神怒斩"]) {
                for (let index = 0; index < src_unit["主动技能"].length; index++) {
                    let skill = src_unit["主动技能"][index];
                    if (skill["名称"] === "天神怒斩" && skill["剩余冷却回合"] && skill["剩余冷却回合"] > 0) {
                        skill["剩余冷却回合"] -= 1;
                        break;
                    }
                }
            }
            return { "返回": false, "重复次数": 1, "起始伤害": 1, "叠加伤害": -0.1, "重复提示": false, "连击次数": 3 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            if (src_unit["乘势"]) {
                src_unit["乘势"] = undefined;
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "强袭", 11)
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "追袭")) {
                    target_list[0]
                    for (let index = 0; index < target_list.length; index++) {
                        if (target_list[index]["气血"] <= 0) {
                            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_list[index], "腾雷", 11);
                        }
                    }

                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "石摧") && G.RandomUtils.chance(32)) {
                G.FightUnitUtils.add_super_zhan_yi(src_unit, 1);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "山破") && G.RandomUtils.chance(64)) {
                G.FightUnitUtils.add_zhan_yi(src_unit, 1)
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "强袭")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "强袭", 11);
            }
        }
    },
    "惊涛怒": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 4
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [attack_number, "战意"];
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "饮海")) {
                defense = defense * 0.9;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "煞气")) {
                damage += 300;
            }
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 0.7;
            if (skill_level >= 175) {
                start_damage = 1;
            } else if (skill_level >= 150) {
                start_damage = 0.95;
            } else if (skill_level >= 125) {
                start_damage = 0.9;
            } else if (skill_level >= 100) {
                start_damage = 0.85;
            } else if (skill_level >= 75) {
                start_damage = 0.8;
            } else if (skill_level >= 50) {
                start_damage = 0.75;
            }
            if (src_unit["法术状态"]["再战"]) {
                start_damage = start_damage * 1.15;
            }
            if (src_unit["超级战意"] >= 1) {
                src_unit["超级战意"] = src_unit["超级战意"] - 1;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "乘势")) {
                    src_unit["乘势"] = 1;
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "妙得")) {
                    src_unit["附加必杀几率"] = src_unit["附加必杀几率"] + 20;
                } else {
                    start_damage = start_damage * 1.2;
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "惊涛")) {
                        let num = 0;
                        if (G.FightUnitUtils.get_unit_equipment_wx(src_unit, 2) === "水") { //武器
                            num = num + 0.04;
                        }
                        if (G.FightUnitUtils.get_unit_equipment_wx(src_unit, 3) === "水") { //衣服
                            num = num + 0.04;
                        }
                        start_damage = start_damage * (1 + num);
                    }
                }
            }
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "物理连击触发": function (fight_data, src_unit, target_unit, target_list, attack_number) {
            if (attack_number === 1) {
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["战斗法术"] = "惊涛怒";
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["寄存目标"] = target_list.map(e => e["编号"]);
            }
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            if (src_unit["法术状态"]["再战"]) {
                G.FightStatusUtils.canel_unit_status(fight_data, "再战", src_unit);
            }
            if (src_unit["乘势"]) {
                src_unit["乘势"] = undefined;
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "强袭", 11)
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "追袭")) {
                    target_list[0]
                    for (let index = 0; index < target_list.length; index++) {
                        if (target_list[index]["气血"] <= 0) {
                            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_list[index], "腾雷", 11);
                        }
                    }

                }
            }
        },
        "击杀触发": function (fight_data, src_unit, target_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "再战") && src_unit["法术状态"]["再战"]) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "再战", 11);
            }
        }
    },
    "翻江搅海": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 125) {
                return 6;
            } else {
                return 5;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [attack_number, "战意"];
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            if (G.FightUnitUtils.check_fight_unit_passive_skill(src_unit, "饮海")) {
                defense = defense * 0.9;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "煞气")) {
                damage += 300;
            }
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "无双")) {
                damage = damage * 1.12;
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 0.8;
            if (skill_level >= 75) {
                start_damage = 1
            } else if (skill_level >= 50) {
                start_damage = 0.9
            }
            if (src_unit["天神怒斩"]) {
                for (let index = 0; index < src_unit["主动技能"].length; index++) {
                    let skill = src_unit["主动技能"][index];
                    if (skill["名称"] === "天神怒斩" && skill["剩余冷却回合"] && skill["剩余冷却回合"] > 0) {
                        skill["剩余冷却回合"] -= 1;
                        break;
                    }
                }
            }
            if (src_unit["超级战意"] >= 1) { //要计算数量
                let num = src_unit["超级战意"]
                src_unit["超级战意"] = 0;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "乘势")) {
                    src_unit["乘势"] = 1;
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "妙得")) {
                    src_unit["附加必杀几率"] = src_unit["附加必杀几率"] + 20 * num;
                } else {
                    start_damage = start_damage * (1 + 0.2 * num);
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "惊涛")) {
                        let num = 0;
                        if (G.FightUnitUtils.get_unit_equipment_wx(src_unit, 2) === "水") { //武器
                            num = num + 0.04;
                        }
                        if (G.FightUnitUtils.get_unit_equipment_wx(src_unit, 3) === "水") { //衣服
                            num = num + 0.04;
                        }
                        start_damage = start_damage * (1 + num);
                    }
                }
            }
            return { "返回": true, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "物理连击触发": function (fight_data, src_unit, target_unit, target_list, attack_number) {
            if (attack_number === 1) {
                //全屏法术
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["全屏法术"] = "翻江搅海";
            }
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            if (src_unit["乘势"]) {
                src_unit["乘势"] = undefined;
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "强袭", 11)
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "追袭")) {
                    target_list[0]
                    for (let index = 0; index < target_list.length; index++) {
                        if (target_list[index]["气血"] <= 0) {
                            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_list[index], "腾雷", 11);
                        }
                    }

                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "石摧") && G.RandomUtils.chance(32)) {
                G.FightUnitUtils.add_super_zhan_yi(src_unit, 1);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "山破") && G.RandomUtils.chance(64)) {
                G.FightUnitUtils.add_zhan_yi(src_unit, 1)
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "强袭")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "强袭", 11);
            }
        }
    },
    "强袭": {
        "刷新回合": 3,
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["强袭"] = {};
            target_unit["法术状态"]["强袭"]["回合"] = 3;
        }
    },
    "真君显灵": {
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 8 },
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return 100
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            target_unit["法术状态"]["真君显灵"]["加伤点"] = target_unit["战意"] * 20;
            if (target_unit["超级战意"] > 0) {
                target_unit["法术状态"]["真君显灵"]["加伤点"] = target_unit["法术状态"]["真君显灵"]["加伤点"] * 2;
                target_unit["超级战意"] = 0;
            }
            target_unit["战意"] = 0
            return { "回合": 3 };
        },
        "增益独立算法": function (fight_data, src_unit, target_unit) {
            if (target_unit["战意"] < 1) {
                fight_data["战斗流程"].push({ "流程": 6, "内容": { "名称": "行动失败(战意不足)", "编号": src_unit["编号"] } });
                return false;
            }
        }
    },
    "再战": {
        "不可驱散": true,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },
    "酣战": {
        "层数上限": 6,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "层数": 1 };
        },
        "死亡触发": function (fight_data, src_unit, target_unit) {
            G.FightStatusUtils.canel_unit_status(fight_data, "酣战", target_unit)
        }
    },
    "力竭": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            target_unit["法术状态"]["力竭"]["减伤"] = 0.2
            return { "回合": 3 };
        }
    },
    "怒涛": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 2, "防御": Math.floor(fight_unit["战意"] * 20) };
        }
    },
    "腾雷": {
        "技能类型": "物理",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [attack_number, "战意"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 3;
            if (skill_level >= 150) {
                hh = 4;
            }
            return { "回合": hh };
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "煞气")) {
                damage += 300;
            }
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 1;
            if (!G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "闪雷")) {
                if (src_unit["超级战意"] >= 1) {
                    src_unit["超级战意"] = src_unit["超级战意"] - 1;
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "妙得")) {
                        src_unit["附加必杀几率"] = src_unit["附加必杀几率"] + 20
                    } else {
                        start_damage = start_damage * 1.2
                        if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "惊涛")) {
                            let num = 0;
                            if (G.FightUnitUtils.get_unit_equipment_wx(src_unit, 2) === "水") { //武器
                                num = num + 0.04;
                            }
                            if (G.FightUnitUtils.get_unit_equipment_wx(src_unit, 3) === "水") { //衣服
                                num = num + 0.04;
                            }
                            start_damage = start_damage * (1 + num);
                        }
                    }
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "乘势")) {
                        src_unit["乘势"] = 1;
                    }
                }
            }
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            if (G.RandomUtils.chance(60)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_list[0], "腾雷", skill_level);
            }
            if (src_unit["乘势"]) {
                src_unit["乘势"] = undefined;
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "强袭", 11);
            }
        },
        "持续回血触发": function (fight_data, src_unit, target_unit, hp) {
            // 腾雷状态下持续回血量减半
            hp = Math.floor(hp * 0.5);
            return hp;
        }
    },
    "无双战魂": {
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 6 },
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightUnitUtils.add_zhan_yi(src_unit, G.RandomUtils.generate_random(1, 3));
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "金鸦火羽（高级）"];
        }
    },
    "不动如山": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [150, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["不动如山"] = {};
            target_unit["法术状态"]["不动如山"]["回合"] = 1;
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = Math.floor(damage * 0.6);
        }
    },
    "碎星诀": {
        // 提升物理伤害结果，持续一定回合。不能与镇魂诀同时存在。
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            let hh = 12;
            if (status_level >= 180) {
                hh = 16;
            } else if (status_level >= 135) {
                hh = 15;
            } else if (status_level >= 90) {
                hh = 14;
            } else if (status_level >= 45) {
                hh = 13;
            }
            target_unit["法术状态"]["碎星诀"] = {};
            target_unit["法术状态"]["碎星诀"]["回合"] = hh;
            if (target_unit["法术状态"]["镇魂诀"]) {
                G.FightStatusUtils.canel_unit_status(fight_data, "镇魂诀", target_unit);
            }
            target_unit["法术状态"]["碎星诀"]["物理伤害结算"] = status_level + 10;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "战诀") && target_unit["编号"] === src_unit["编号"]) {
                G.FightUnitUtils.add_zhan_yi(src_unit, 1);
                G.FightUnitUtils.add_zhan_yi(src_unit, 1);
            }
        }
    },
    "镇魂诀": {
        // 提升物理必杀几率，持续一定回合。 不能与碎星诀同时存在
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            if (fight_unit["气血"] >= fight_unit["最大气血"] * 0.1) {
                return [0, "无"];
            }
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"]) {
                let hp = Math.floor(src_unit["气血"] * 0.05);
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾死亡"] = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, src_unit, hp, "镇魂诀");
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾气血"] = hp;
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            let hh = 12;
            if (status_level >= 180) {
                hh = 14;
            } else if (status_level >= 135) {
                hh = 13;
            }
            target_unit["法术状态"]["镇魂诀"] = {};
            target_unit["法术状态"]["镇魂诀"]["回合"] = hh;
            if (target_unit["法术状态"]["碎星诀"]) {
                G.FightStatusUtils.canel_unit_status(fight_data, "碎星诀", target_unit);
            }
            target_unit["法术状态"]["镇魂诀"]["加必杀"] = 16;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "凌波城", "战诀") && target_unit["编号"] === src_unit["编号"]) {
                G.FightUnitUtils.add_zhan_yi(src_unit, 1);
            }
        },
        "物理攻击必杀几率": function (fight_data, src_unit, target_unit, kill_gl) {
            kill_gl += target_unit["法术状态"]["镇魂诀"]["加必杀"];
        }
    },
    "无穷妙道": {
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [60, "魔法"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.sects_fengyin_ap["无底洞"])
        }
    },
    "超级赐福·元吉": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },

    "超级赐福·双喜": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },
    "超级赐福·三和": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },
    "超级赐福·四季": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },
    "超级赐福·五福": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },

    "超级赐福·六祥": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },
    "超级赐福·七瑞": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },
    "超级赐福·八荒": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },
    "超级赐福·九州": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },
    "超级赐福·十全": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },


    //                    花果山                    //
    "压邪": {
        // 连续三回合及以上使用如意神通时，临时增加(人物等级×1.5)点伤害力且造成的伤害增加10%。(不可驱散)
        "技能类型": "增益",
        "不可驱散": true,
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["压邪"] = {};
            target_unit["法术状态"]["压邪"]["回合"] = 2;
            target_unit["法术状态"]["压邪"]["层数"] = 1;
            return false;
        },
        "法攻后触发": function (fight_data, src_unit, target_unit_list, skill_name, skill_level) {
            let skill_data = G.SkillData.default[skill_name];
            if (skill_data["如意神通"]) {
                src_unit["法术状态"]["压邪"]["层数"] += 1;
            }
        },
        "物攻后触发": function (fight_data, src_unit, target_unit_list, skill_name, skill_level) {
            let skill_data = G.SkillData.default[skill_name];
            if (skill_data["如意神通"]) {
                src_unit["法术状态"]["压邪"]["层数"] += 1;
            }
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            if (src_unit["特殊状态"]["压邪"]["回合"] >= 3) {
                damage += src_unit["等级"] * 1.5;
            }
        },
        "攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            if (src_unit["特殊状态"]["压邪"]["回合"] >= 3) {
                damage += src_unit["等级"] * 1.5;
            }
        }
    },
    "显圣": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["显圣"] = {};
            target_unit["法术状态"]["显圣"]["回合"] = 2;
        }
    },
    "得意": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999 };
        }
    },
    "棒打雄风": {
        "技能类型": "物理",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [75, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 1.2;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "愈勇")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "愈勇", 69);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "斗志")) {
                src_unit["斗志"] = "棒打雄风";
                start_damage = start_damage * 1.06;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "贪天")) {
                src_unit["贪天"] = "棒打雄风";
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "自在")) {
                src_unit["自在"] = 1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "变通")) {
                src_unit["变通"] = "棒打雄风";
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "顽性")) {
                src_unit["顽性"] = "棒打雄风";
            }
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            let fyjn = G.FightStatusUtils.relieve_status(fight_data, target_list[0], G.Skill.relieve_gain_status_ap);
            if (fyjn.length > 0) {
                G.FightStatusUtils.canel_unit_status(fight_data, G.RandomUtils.random_get_array(fyjn), target_list[0]);
            }
        }
    },
    "当头一棒": {
        "技能类型": "物理",
        "如意神通": true,
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [75, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 1.4;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "威仪")) {
                src_unit["威仪"] = 1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "愈勇")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "愈勇", 69);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "斗志")) {
                src_unit["斗志"] = "当头一棒";
                start_damage = start_damage * 1.06;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "贪天")) {
                src_unit["贪天"] = "当头一棒";
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "自在")) {
                src_unit["自在"] = 1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "变通")) {
                src_unit["变通"] = "当头一棒";
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "顽性")) {
                src_unit["顽性"] = "当头一棒";
            }
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            if (target_unit["气血"] >= target_unit["最大气血"] * 0.6 && target_unit["气血"] <= target_unit["最大气血"] * 0.7) {
                damage = damage * 2;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "闹天")) {
                damage = damage * 1.15;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "通天") && target_unit["法术状态"] && target_unit["法术状态"]["显圣"]) {
                damage = damage * 1.15;
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        }
    },
    "神针撼海": {
        "技能类型": "物理",
        "如意神通": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 125) {
                return 5;
            } else if (skill_level >= 75) {
                return 4;
            } else if (skill_level >= 45) {
                return 3;
            } else if (skill_level >= 25) {
                return 2;
            } else {
                return 1;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [75, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 1.1;
            if (src_unit["威仪"]) {
                src_unit["威仪"] = undefined;
                start_damage = 1.16;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "愈勇")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "愈勇", 69);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "斗志")) {
                src_unit["斗志"] = "神针撼海";
                start_damage = start_damage * 1.06
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "贪天")) {
                src_unit["贪天"] = "神针撼海";
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "自在")) {
                src_unit["自在"] = 1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "变通")) {
                src_unit["变通"] = "神针撼海";
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "顽性")) {
                src_unit["顽性"] = "神针撼海";
            }
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "填海")) {
                let gl = 0;
                if (G.FightUnitUtils.get_unit_equipment_wx(src_unit, 2) === "土") { //武器
                    gl = gl + 5;
                }
                if (G.FightUnitUtils.get_unit_equipment_wx(src_unit, 3) === "土") { //衣服
                    gl = gl + 5;
                }
                if (G.RandomUtils.chance(gl)) {
                    damage = damage * 2;
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "通天") && target_unit["法术状态"] && target_unit["法术状态"]["显圣"]) {
                damage = damage * 1.15;
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        },
        "物理连击触发": function (fight_data, src_unit, target_unit, target_list, attack_number) {
            if (attack_number === 1) {
                //全屏法术
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["全屏法术"] = "神针撼海";
            }
        }
    },
    "杀威铁棒": {
        "技能类型": "物理",
        "如意神通": true,
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [75, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["杀威铁棒"] = {};
            target_unit["法术状态"]["杀威铁棒"]["回合"] = 1;
            target_unit["法术状态"]["杀威铁棒"]["攻击"] = src_unit["编号"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 1.2;
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_list[0], "杀威铁棒", 69);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "愈勇")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "愈勇", 69);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "斗志")) {
                src_unit["斗志"] = "杀威铁棒";
                start_damage = start_damage * 1.06
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "贪天")) {
                src_unit["贪天"] = "杀威铁棒";
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "自在")) {
                src_unit["自在"] = 1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "变通")) {
                src_unit["变通"] = "杀威铁棒";
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "顽性")) {
                src_unit["顽性"] = "杀威铁棒";
            }
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        }
    },
    "泼天乱棒": {
        "技能类型": "物理",
        "如意神通": true,
        "佛法加成": true,
        "不可保护": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [75, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 1.1
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "愈勇")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "愈勇", 69);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "斗志")) {
                src_unit["斗志"] = "泼天乱棒";
                start_damage = start_damage * 1.06
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "贪天")) {
                src_unit["贪天"] = "泼天乱棒";
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "自在")) {
                src_unit["自在"] = 1;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "变通")) {
                src_unit["变通"] = "泼天乱棒";
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "顽性")) {
                src_unit["顽性"] = "泼天乱棒";
            }
            return { "返回": false, "重复次数": 1, "起始伤害": 1, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "溅射计算": function (fight_data, src_unit, target_unit, damage) {
            if (G.FightUnitUtils.get_target_unit_status(src_unit, target_unit, 1)) {
                //溅射目标
                let js_list = G.FightUtils.get_jian_she_group(fight_data, src_unit, target_unit, 4);
                for (let index = 0; index < js_list.length; index++) {
                    G.FightComputingUtils.remove_hp_js_and_play(fight_data, src_unit, js_list[index], damage * 0.3);
                }
            }
        }
    },
    "威震凌霄": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["威震凌霄"] = {};
            target_unit["法术状态"]["威震凌霄"]["回合"] = 3;
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 0.9, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_list[0], "威震凌霄", 69);
        }
    },
    "铜头铁臂": {
        // 为自身施加一个护盾。护盾存在时间内，提高自身的伤害结果；通天行者流派可提高自身的法术伤害结果。
        "技能类型": "增益",
        "如意神通": true,
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [75, "魔法"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"]) {
                let num = Math.floor(src_unit["最大气血"] / 3.6);
                let max = skill_level * 20;
                if (num >= max) {
                    num = max;
                }
                G.FightUnitUtils.add_hu_dun_for_lt_hp(fight_data, src_unit, num);
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "愈勇")) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "愈勇", 69);
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "斗志")) {
                    src_unit["斗志"] = "铜头铁臂";
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "贪天")) {
                    src_unit["贪天"] = "铜头铁臂";
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "锻炼")) {
                    if (src_unit["锻炼"] === undefined) {
                        src_unit["锻炼"] = { "回合": 2, "层数": 1 };
                    } else {
                        src_unit["锻炼"]["回合"] = 2;
                        src_unit["锻炼"]["层数"] += 1;
                    }
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "自在")) {
                    src_unit["自在"] = 1;
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "变通")) {
                    src_unit["贪天"] = "铜头铁臂";
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "顽性")) {
                    src_unit["顽性"] = "铜头铁臂";
                }
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["铜头铁臂"] = {};
            target_unit["法术状态"]["铜头铁臂"]["回合"] = 999;
            if (src_unit["奇经八脉"]["当前流派"] === "通天行者") {
                target_unit["法术状态"]["铜头铁臂"]["颜色"] = "青";
            } else {
                target_unit["法术状态"]["铜头铁臂"]["颜色"] = "红";
            }
        },
        "扣血触发": function (fight_data, src_unit, target_unit, remove_hp) {
            if (target_unit["护盾"] === 0) {
                // 护盾扣完取消铜头铁臂状态
                G.FightStatusUtils.canel_unit_status(fight_data, "铜头铁臂", target_unit);
            }
        }
    },
    "愈勇": {
        "层数上限": 3,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "层数": 1 };
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * (1 - target_unit["法术状态"]["愈勇"]["层数"] * 0.02);
        }
    },
    "开辟": {
        "层数上限": 6,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "层数": 1 };
        },
        "死亡触发": function (fight_data, src_unit, target_unit) {
            G.FightStatusUtils.canel_unit_status(fight_data, "开辟", target_unit)
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            damage += src_unit["神器"]["等级"] * 25 * src_unit["法术状态"]["开辟"]["层数"];
        }
    },
    "齐天神通": {
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 8 },
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [60, "愤怒"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["齐天神通"] = {};
            target_unit["法术状态"]["齐天神通"]["回合"] = 8;
        }
    },
    "无所遁形": {
        "技能类型": "增益",
        "如意神通": true,
        "指定对象": "自己",
        "层数上限": 3,
        "刷新回合": 8,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"]) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "愈勇")) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "愈勇", 69);
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "斗志")) {
                    src_unit["斗志"] = "无所遁形";
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "贪天")) {
                    src_unit["贪天"] = "无所遁形";
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "锻炼")) {
                    if (src_unit["锻炼"] === undefined) {
                        src_unit["锻炼"] = { "回合": 2, "层数": 1 };
                    } else {
                        src_unit["锻炼"]["回合"] = 2;
                        src_unit["锻炼"]["层数"] += 1;
                    }
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "自在")) {
                    src_unit["自在"] = 1
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "变通")) {
                    src_unit["贪天"] = "无所遁形";
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "顽性")) {
                    src_unit["顽性"] = "无所遁形";
                }
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["无所遁形"] = {};
            let hh = 12;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "翻天")) {
                hh = 7;
            }
            target_unit["法术状态"]["无所遁形"]["回合"] = hh;
            target_unit["法术状态"]["无所遁形"]["层数"] = 1;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "添威") && G.RandomUtils.chance(20)) {
                target_unit["法术状态"]["无所遁形"]["层数"] = 1;
            }
            if (src_unit["奇经八脉"]["当前流派"] === "通天行者") {
                target_unit["法术状态"]["无所遁形"]["颜色"] = "法";
            } else {
                target_unit["法术状态"]["无所遁形"]["颜色"] = "物";
            }
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            defense = defense * (1 - src_unit["法术状态"]["无所遁形"]["层数"] * 0.1);
        }
    },
    "九幽除名": {
        "技能类型": "增益",
        "如意神通": true,
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [75, "魔法"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"]) {
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "愈勇")) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "愈勇", 69);
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "锻炼")) {
                    if (src_unit["锻炼"] === undefined) {
                        src_unit["锻炼"] = { "回合": 2, "层数": 1 };
                    } else {
                        src_unit["锻炼"]["回合"] = 2;
                        src_unit["锻炼"]["层数"] += 1;
                    }
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "斗志")) {
                    src_unit["斗志"] = "九幽除名";
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "贪天")) {
                    src_unit["贪天"] = "九幽除名";
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "自在")) {
                    src_unit["自在"] = 1
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "变通")) {
                    src_unit["贪天"] = "九幽除名";
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "顽性")) {
                    src_unit["顽性"] = "九幽除名";
                }
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["九幽除名"] = {};
            target_unit["法术状态"]["九幽除名"]["回合"] = 1;
        }
    },
    "棒掀北斗": {
        "技能类型": "法术",
        "如意神通": true,
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [75, "魔法"];
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            if (src_unit["威仪"] && src_unit["威仪"] === "棒掀北斗") {
                damage_ratio = damage_ratio * 1.06;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "威仪")) {
                src_unit["威仪"] = "兴风作浪";
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "愈勇")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "愈勇", 69);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "斗志")) {
                src_unit["斗志"] = "棒掀北斗";
                damage_ratio = damage_ratio * 1.06;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "顽性")) {
                src_unit["顽性"] = "棒掀北斗";
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "锻炼")) {
                if (src_unit["锻炼"] === undefined) {
                    src_unit["锻炼"] = { "回合": 2, "层数": 1 };
                } else {
                    src_unit["锻炼"] = { "回合": 2, "层数": src_unit["锻炼"]["层数"] + 1 };
                }
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 2.3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit)
            let fl_ratio = 1;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "斗战")) {
                damage = damage * 1.15;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "得意") && src_unit["法术状态"]["得意"]) {
                damage = damage * 1.16;
                G.FightStatusUtils.canel_unit_status(fight_data, "得意", src_unit);
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "兴风作浪": {
        "技能类型": "法术",
        "如意神通": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 100) {
                return 5;
            } else if (skill_level >= 75) {
                return 4;
            } else if (skill_level >= 50) {
                return 3;
            } else if (skill_level >= 30) {
                return 2;
            } else {
                return 1;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [75, "魔法"];
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            if (src_unit["威仪"] && src_unit["威仪"] === "兴风作浪") {
                damage_ratio = damage_ratio * 1.06;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "威仪")) {
                src_unit["威仪"] = "棒掀北斗";
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "愈勇")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "愈勇", 69)
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "斗志")) {
                src_unit["斗志"] = "兴风作浪";
                damage_ratio = damage_ratio * 1.06
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "顽性")) {
                src_unit["顽性"] = "兴风作浪";
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "锻炼")) {
                if (src_unit["锻炼"] === undefined) {
                    src_unit["锻炼"] = { "回合": 2, "层数": 1 };
                } else {
                    src_unit["锻炼"] = { "回合": 2, "层数": src_unit["锻炼"]["层数"] + 1 };
                }
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 1.5 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("花果山", target_list.length, skill_level);
            if (target_index === 0 && !fight_data["PK战斗"] && !G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "闹海")) {
                fl_ratio += 0.1;
            }
            if (src_unit["类型"] === "角色" && G.RandomUtils.chance(10) && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "胜意")) {
                damage = damage * 2;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "得意") && src_unit["法术状态"]["得意"]) {
                damage = damage * 1.16;
                G.FightStatusUtils.canel_unit_status(fight_data, "得意", src_unit);
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "棍打诸神": {
        "技能类型": "法术",
        "如意神通": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 10
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [75, "魔法"];
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "愈勇")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "愈勇", 69);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "斗志")) {
                src_unit["斗志"] = "棍打诸神";
                damage_ratio = damage_ratio * 1.06
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "顽性")) {
                src_unit["顽性"] = "棍打诸神";
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "锻炼")) {
                if (src_unit["锻炼"] === undefined) {
                    src_unit["锻炼"] = { "回合": 2, "层数": 1 };
                } else {
                    src_unit["锻炼"] = { "回合": 2, "层数": src_unit["锻炼"]["层数"] + 1 };
                }
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 1 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("花果山", target_list.length, skill_level);
            fl_ratio += 0.1;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "得意") && src_unit["法术状态"]["得意"]) {
                damage = damage * 1.16;
                G.FightStatusUtils.canel_unit_status(fight_data, "得意", src_unit);
            }
            return [Math.floor(damage * fl_ratio * 0.7)];
        }
    },
    "意马心猿": {
        "技能类型": "法术",
        "如意神通": true,
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [75, "魔法"];
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "愈勇")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "愈勇", 69);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "斗志")) {
                src_unit["斗志"] = "意马心猿";
                damage_ratio = damage_ratio * 1.06;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "顽性")) {
                src_unit["顽性"] = "意马心猿";
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "锻炼")) {
                if (src_unit["锻炼"] === undefined) {
                    src_unit["锻炼"] = { "回合": 2, "层数": 1 };
                } else {
                    src_unit["锻炼"] = { "回合": 2, "层数": src_unit["锻炼"]["层数"] + 1 };
                }
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 2.2 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("花果山", target_list.length, skill_level);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "逞胜")) { //target_unit如果处于封印状态，额外驱散1个增益状态
                let status = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.relieve_gain_status_ap);
                if (status.length > 0) {
                    for (let index = 0; index < status.length; index++) {
                        G.FightStatusUtils.canel_unit_status(fight_data, status[index], target_unit);
                    }
                }
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "得意") && src_unit["法术状态"]["得意"]) {
                damage = damage * 1.16;
                G.FightStatusUtils.canel_unit_status(fight_data, "得意", src_unit);
            }
            let js_target = G.FightUtils.get_jian_she_group(fight_data, src_unit, target_unit, 4);
            for (let index = 0; index < js_target.length; index++) {
                let target = js_target[index];
                if (target["编号"] !== target_unit["编号"]) {
                    G.FightComputingUtils.remove_hp_js_and_play(fight_data, src_unit, target, src_unit["等级"] * 3 + 100, "意马心猿");
                }
            }
            return [Math.floor(damage * fl_ratio), 3];
        }
    },
    "灵彻太虚": {
        "技能类型": "法术",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["灵彻太虚"] = {};
            target_unit["法术状态"]["灵彻太虚"]["回合"] = 3;
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "愈勇")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "愈勇", 69);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "斗志")) {
                src_unit["斗志"] = "灵彻太虚";
                damage_ratio = damage_ratio * 1.06;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "顽性")) {
                src_unit["顽性"] = "灵彻太虚";
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "锻炼")) {
                if (src_unit["锻炼"] === undefined) {
                    src_unit["锻炼"] = { "回合": 2, "层数": 1 };
                } else {
                    src_unit["锻炼"] = { "回合": 2, "层数": src_unit["锻炼"]["层数"] + 1 };
                }
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = skill_level * 2.1 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1;
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "灵彻太虚", skill_level);
            return [Math.floor(damage * fl_ratio)];
        },
        "物理攻击必杀几率": function (fight_data, src_unit, target_unit, kill_gl) {
            kill_gl -= 5;
        }
    },
    "云暗天昏": {
        "技能类型": "固伤",
        "如意神通": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (skill_level >= 140) {
                return 6;
            } else if (skill_level >= 105) {
                return 5;
            } else if (skill_level >= 70) {
                return 4;
            } else if (skill_level >= 35) {
                return 4;
            } else {
                return 2;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [75, "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = skill_level * 3;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "得意") && src_unit["法术状态"]["得意"]) {
                damage = damage * 1.16;
                G.FightStatusUtils.canel_unit_status(fight_data, "得意", src_unit);
            }
            return Math.floor(damage);
        },
        "固伤攻击前触发": function (fight_data, src_unit, target_unit, skill_level) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "愈勇")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "愈勇", 69);
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["云暗天昏"] = {};
            target_unit["法术状态"]["云暗天昏"]["回合"] = 2;
        }
    },
    "天地洞明": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "金鸦火羽（高级）"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["全屏"] = true;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["天地洞明"] = {};
            target_unit["法术状态"]["天地洞明"]["回合"] = 1;
        }
    },
    "气慑天军": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["气慑天军"] = {};
            target_unit["法术状态"]["气慑天军"]["回合"] = 4;
        }
    },
    "八戒上身": {
        "技能类型": "群封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "指定目标": function (fight_data, src_unit, target_unit, target_count) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "圈养")) {
                target_count = 5;
                // 取多个敌方角色目标
                return G.FightUtils.get_enemy_team_group_characters_unit(fight_data, src_unit, target_unit, target_count);
            } else {
                return G.FightUtils.get_enemy_team_group_survive_unit(fight_data, src_unit, target_unit, target_count);
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["八戒上身"] = {};
            target_unit["法术状态"]["八戒上身"]["层数"] = 1;
            let hh = 1;
            if (target_unit["奇经八脉"] && target_unit["奇经八脉"]["圈养"]) {
                hh = 3;
            } else {
                hh = 2;
            };
            target_unit["法术状态"]["八戒上身"]["回合"] = hh;
            let status_names = G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.relieve_gain_status_ap);
            if (status_names.length > 0) {
                let status_name = G.RandomUtils.random_get_array(status_names);
                G.FightStatusUtils.canel_unit_status(fight_data, status_name, target_unit);
            }
            fight_data["战斗流程"].push({ "流程": 709, "攻击方": src_unit["编号"], "编号": target_unit["编号"], "参数": "小猪" });
            G.FightUtils.add_waiting_play_time(fight_data, 2, "八戒上身");
        }
    },
    //                    特技                    //
    "弱点击破": {
        "技能类型": "物理",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "特技消耗"];
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "目空")) {
                defense = defense * 0.9;
            }
            defense = defense * 0.8;
        },
        "消耗触发": function (fight_data, fight_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "五庄观", "炼果")) {
                G.FightUnitUtils.add_rsg(fight_unit);
            }
        }
    },
    "破血狂攻": {
        "技能类型": "物理",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [80, "特技消耗"];
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "目空")) {
                defense = defense * 0.9;
            }
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            target_list[1] = target_list[0];
            let lj_number = target_list.length;
            let start_damage = 1;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "强击")) {
                start_damage = 1.32;
            }
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": false, "连击次数": lj_number };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "盘丝洞", "制怒") && target_list[0]["法术状态"]["天罗地网"]) {
                G.FightUnitUtils.add_fen_nu(src_unit, 12);
            }
        },
        "消耗触发": function (fight_data, fight_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "五庄观", "炼果")) {
                G.FightUnitUtils.add_rsg(fight_unit);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "狮驼岭", "怒火")) {
                let pet_data = G.FightUnitUtils.get_fight_unit_pet(fight_data, fight_unit);
                if (pet_data) {
                    G.FightStatusUtils.add_unit_status(fight_data, fight_unit, pet_data, "怒火", 11);
                }
            } else if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "狮驼岭", "狂血")) {
                G.FightStatusUtils.add_unit_status(fight_data, fight_unit, fight_unit, "狂怒", 11, 3);
            }
        }
    },
    "破碎无双": {
        "技能类型": "物理",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [80, "特技消耗"];
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "目空")) {
                defense = defense * 0.9;
            }
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            let start_damage = 1;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "五庄观", "强击")) {
                start_damage = 1.32;
            }
            return { "返回": false, "重复次数": 1, "起始伤害": start_damage, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "掉血计算": function (fight_data, src_unit, target_unit, damage) {
            G.FightUnitUtils.remove_unit_mp(fight_data, target_unit, damage);
        },
        "消耗触发": function (fight_data, fight_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "女儿村", "轻刃")) {
                G.FightStatusUtils.add_unit_status(fight_data, fight_unit, fight_unit, "自矜", 69);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "五庄观", "炼果")) {
                G.FightUnitUtils.add_rsg(fight_unit);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "狮驼岭", "怒火")) {
                let pet_data = G.FightUnitUtils.get_fight_unit_pet(fight_data, fight_unit);
                if (pet_data) {
                    G.FightStatusUtils.add_unit_status(fight_data, fight_unit, pet_data, "怒火", 11);
                }
            } else if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "狮驼岭", "狂血")) {
                G.FightStatusUtils.add_unit_status(fight_data, fight_unit, fight_unit, "狂怒", 11, 3);
            }
        }
    },
    "琴音三叠": {
        "技能类型": "特殊",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [80, "特技消耗"];
        },
        "特殊算法": function (fight_data, src_unit, target_unit, skill_level) {
            if (target_unit === undefined) {
                console.debug(`琴音三叠 , 目标为空,结束计算`);
                return;
            }

            // 如果需要的消耗类型不够则行动失败
            if (!G.FightUnitUtils.excute_unit_skill_consummer(fight_data, src_unit, "特技消耗", 80, "琴音三叠")) {
                fight_data["战斗流程"].push({ "流程": 6, "战斗提示": { "内容": "行动失败", "编号": src_unit["编号"] } });
                return;
            }

            fight_data["战斗流程"].push({ "流程": 911, "特技名称": "琴音三叠", "攻击方": src_unit["编号"], "被攻击": [], "提示": { "允许": true, "技能类型": "法术", "名称": undefined } });

            // 对目标重复攻击三次
            for (let index = 0; index < 3; index++) {
                let damage = src_unit["等级"] * 6 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "化生寺", "抚琴")) {
                    damage = damage * 1.15;
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "花果山", "得意")) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "得意", 11);
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "天宫", "仙音") && target_unit["法术状态"]["电芒"]) {
                    damage = damage * 1.16;
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "方寸山", "穿透") && target_unit["类型"] !== "角色") {
                    damage = damage * 1.3;
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "不忿")) {
                    G.FightUnitUtils.add_fen_nu(src_unit, 15)
                }
                // 攻击次数减伤
                if (index === 0) {
                    damage = Math.floor(damage * 0.2);
                } else if (index === 1) {
                    damage = Math.floor(damage * 0.3);
                }
                let die = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, target_unit, damage, "琴音三叠");
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"].push({ "编号": target_unit["编号"], "特效": ["琴音三叠"], "伤害": damage, "技能类型": 1, "死亡": die });
            }
        }
    },
    "移行换影": {
        "技能类型": "特殊",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [150, "特技消耗"];
        },
        "特殊算法": function (fight_data, src_unit, target_unit, skill_level) {
            if (G.RandomUtils.chance(8)) {
                console.debug(`移行换影 , 概率触发,结束计算`);
                return
            }
            if (target_unit["类型"] !== "角色" || !G.FightUnitUtils.get_target_unit_status(src_unit, target_unit, 1)) {
                console.debug(`移行换影 ===> 目标非角色或无法操作 更换目标`);
                target_unit = G.FightUtils.get_enemy_team_single_survive_unit(fight_data, src_unit);
            }
            if (target_unit === undefined) {
                console.debug(`移行换影 ===> 目标为空 结束计算`);
                return;
            }
            if (src_unit["气血"] < (src_unit["最大气血"] * 0.2) || target_unit["气血"] > target_unit["最大气血"] * 0.8) {
                console.debug(`移行换影 ===> 不满足条件: 自身气血小于百分之20: ${src_unit["气血"] < (src_unit["最大气血"] * 0.2)}, 目标气血大于百分之80: ${target_unit["气血"] > target_unit["最大气血"] * 0.8},结束计算`);
                return;
            }
            fight_data["战斗流程"].push({ "流程": 915, "特技名称": "移行换影", "攻击方": src_unit["编号"], "被攻击": [], "提示": { "允许": true, "技能类型": "法术", "名称": undefined } });

            // 状态处理
            let src_ap_status = Object.assign({}, src_unit["法术状态"]);
            let target_ap_status = Object.assign({}, target_unit["法术状态"]);

            //取消攻击方的状态并加给目标
            for (let key in src_ap_status) {
                G.FightStatusUtils.canel_unit_status(fight_data, key, src_unit);
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, key, src_ap_status[key]["等级"]);
                target_unit["法术状态"][key]["回合"] = src_ap_status[key]["回合"];
            }

            //取消目标的状态并加给攻击方
            for (let key in target_ap_status) {
                G.FightStatusUtils.canel_unit_status(fight_data, key, target_unit);
                G.FightStatusUtils.add_unit_status(fight_data, target_unit, src_unit, key, target_ap_status[key]["等级"]);
                src_unit["法术状态"][key]["回合"] = target_ap_status[key]["回合"];
            }

            if (src_unit["气血"] < target_unit["气血"]) {
                // 如果攻击方气血小于目标气血并且攻击方气血不是满的 攻击方回血 目标掉血
                if (src_unit["气血"] !== src_unit["最大气血"]) {
                    // 目标与攻击方的血量差值
                    let remove_hp = target_unit["气血"] - src_unit["气血"];
                    // 攻击方缺少的血量
                    let src_hp = src_unit["最大气血"] - src_unit["气血"];
                    let add_hp = 0;
                    if (remove_hp > src_hp) {
                        add_hp = remove_hp;
                    } else {
                        add_hp = src_hp;
                    }
                    G.FightComputingUtils.add_target_hp_and_play(fight_data, src_unit, add_hp);
                    G.FightComputingUtils.remove_hp_js_and_play(fight_data, src_unit, target_unit, remove_hp, "移行换影");
                }
            } else if (src_unit["气血"] > target_unit["气血"]) {
                // 如果目标气血大于攻击方气血 目标回血 攻击方掉血
                let hp = src_unit["气血"] - target_unit["气血"]
                G.FightComputingUtils.add_target_hp_and_play(fight_data, target_unit, hp);
                G.FightComputingUtils.remove_hp_js_and_play(fight_data, target_unit, src_unit, hp, "移行换影");
            }
            // 互换气血上限
            let src_max_hp = src_unit["气血上限"];
            let target_max_hp = target_unit["气血上限"];
            src_unit["气血上限"] = target_max_hp;
            target_unit["气血上限"] = src_max_hp;
            // 互换魔法
            let src_mp = src_unit["魔法"];
            let target_mp = target_unit["魔法"];
            src_unit["魔法"] = target_mp;
            target_unit["魔法"] = src_mp;
            G.FightUnitUtils.sync_unit_mp(fight_data, src_unit);
            G.FightUnitUtils.sync_unit_mp(fight_data, target_unit);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"].push({ "编号": target_unit["编号"], "特效": ["移行换影"] });
            G.FightUtils.add_waiting_play_time(fight_data, 2, "移行换影");
        }
    },
    "妙手空空": {
        "技能类型": "特殊",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            let target_unit = G.FightUtils.get_fight_unit_by_number(fight_unit["命令"]["目标"]);
            return [4 * target_unit["等级"], "魔法"];
        },
        // TODO 
        "特殊算法": function (fight_data, src_unit, target_unit, skill_level) {
            // 如果需要的消耗类型不够则行动失败
            if (!G.FightUnitUtils.excute_unit_skill_consummer(fight_data, src_unit, "魔法", target_unit["等级"] * 4, "妙手空空")) {
                fight_data["战斗流程"].push({ "流程": 6, "战斗提示": { "内容": "行动失败(魔法不足)", "编号": src_unit["编号"] } });
                return;
            }
            fight_data["战斗流程"].push({ "流程": 6, "攻击方": src_unit["编号"], "被攻击": [], "技能提示": { "内容": "【特殊】妙手空空", "编号": src_unit["编号"] } });
            if (target_unit["气血"] <= 0) {
                ClientUtils.send_characters_basic_prompt(src_unit["id"], "#Y/对方已经死了，你忍心从尸体上偷东西？")
                return;
            }
            if (target_unit["妙手空空"]) {
                ClientUtils.send_characters_basic_prompt(src_unit["id"], "#Y/对方身上已经没有宝物了");
                return;
            }
            if (G.RandomUtils.chance(skill_level * 10)) {
                let random_data = G.RandomUtils.generate_random(1, 100);
                if (random_data <= 20) {
                    let money = G.RandomUtils.generate_random(500, 5000);
                    G.Characters.add_number_field_value(src_unit["id"], "银子", money);
                    ClientUtils.send_characters_basic_prompt(src_unit["id"], `你得到了${money}金钱`);
                } else if (random_data <= 40) {
                    G.Characters.add_item(src_unit["id"], "金柳露", 1);
                    ClientUtils.send_characters_basic_prompt(src_unit["id"], `你得到了#R/金柳露`);
                } else if (random_data <= 80) {
                    // 随机卡片
                    G.Characters.add_item(src_unit["id"], "怪物卡片", 1);
                    ClientUtils.send_characters_basic_prompt(src_unit["id"], `你得到了#R/怪物卡片`);
                } else {
                    let money = G.RandomUtils.generate_random(500, 5000);
                    G.Characters.add_number_field_value(src_unit["id"], "银子", money);
                    ClientUtils.send_characters_basic_prompt(src_unit["id"], `你得到了${money}金钱`);
                }
                target_unit["妙手空空"] = true;
            } else {
                ClientUtils.send_characters_basic_prompt(src_unit["id"], "对方发觉了你这个行为，机灵地躲过去了！");
            }

        }
    },
    "起死回生": {
        "技能类型": "恢复",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (G.FightUnitUtils.is_no_revive(target_unit) || target_unit["类型"] === "bb" || (target_unit["气血上限"] && target_unit["气血上限"] <= 0)) {
                return 0;
            } else {
                return 1;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [130, "特技消耗"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let data = Math.floor(target_unit["最大气血"] * 0.5);
            if (data > target_unit["等级"] * 20) {
                data = target_unit["等级"] * 20;
            }
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "起死回生", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["复活"] = true;
        }
    },
    "回魂咒": {
        "技能类型": "恢复",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (G.FightUnitUtils.is_no_revive(target_unit) || target_unit["类型"] === "bb" || (target_unit["气血上限"] && target_unit["气血上限"] <= 0)) {
                return 0;
            } else {
                return 1;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "特技消耗"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let data = 150;
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "回魂咒", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            target_unit["死亡"] = undefined;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["复活"] = true;
        }
    },
    "气疗术": {
        "技能类型": "恢复",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "特技消耗"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let data = Math.floor(target_unit["最大气血"] * 0.03 + 200);
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "气疗术", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        }
    },
    "四海升平": {
        "技能类型": "恢复",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [135, "特技消耗"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let data = Math.floor(target_unit["最大气血"] * 0.25);
            if (data >= target_unit["等级"] * 12) {
                data = target_unit["等级"] * 12;
            }
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "四海升平", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        }
    },
    "水清诀": {
        "技能类型": "恢复",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            let value = 50;
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "女儿村", "花护")) {
                value -= 8;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "无底洞", "噬魂") && G.FightUtils.check_fight_unit_sects_is_single(fight_data, fight_unit, "无底洞")) {
                value = Math.floor(value / 2);
            }
            return [value, "特技消耗"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.relieve_status(fight_data, target_unit, G.FightUnitUtils.get_error_ap_status(target_unit));
            if (G.FightUnitUtils.check_fight_unit_jingmai(target_unit, "狮驼岭", "背水")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "背水", 11);
            } else if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "花护")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "花护", 11);
            } else if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "噬魂") && G.FightUtils.check_fight_unit_sects_is_single(fight_data, src_unit, "无底洞")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "噬魂", 11);
            }
        }
    },
    "玉清诀": {
        "技能类型": "恢复",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            let value = 125;
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "女儿村", "花护")) {
                value -= 8;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "无底洞", "暗潮")) {
                value -= 25;
            }
            return [value, "特技消耗"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "暗潮")) {
                if (index === 0) {
                    let xh = Math.floor(src_unit["气血"] * 0.1)
                    src_unit["气血"] -= xh;
                    fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["扣除气血"] = xh
                }
                G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.fb_feng_yin_status_ap, "玉清诀");
            } else {
                G.FightStatusUtils.relieve_status(fight_data, target_unit, G.FightUnitUtils.get_error_ap_status(target_unit), "玉清诀");
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "花护")) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "花护", 11);
                }
            }
        }
    },
    "冰清诀": {
        "技能类型": "恢复",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            let value = 100;
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "女儿村", "花护")) {
                value -= 8;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "无底洞", "噬魂") && G.FightUtils.check_fight_unit_sects_is_single(fight_data, fight_unit, "无底洞")) {
                value = Math.floor(value / 2);
            }
            return [value, "特技消耗"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.relieve_status(fight_data, target_unit, G.FightUnitUtils.get_error_ap_status(target_unit));
            let data = Math.floor(target_unit["最大气血"] * 0.25);
            if (data >= target_unit["等级"] * 12) {
                data = target_unit["等级"] * 12;
            }
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "冰清诀", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "噬魂") && G.FightUtils.check_fight_unit_sects_is_single(fight_data, src_unit, "无底洞")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "噬魂", 11);
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "花护")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "花护", src_unit["等级"]);
            }
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        }
    },
    "晶清诀": {
        "技能类型": "恢复",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            let value = 150;
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "女儿村", "花护")) {
                value -= 8;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "花果山", "显圣")) {
                value -= 8;
            }
            return [150, "特技消耗"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.relieve_status(fight_data, target_unit, G.FightUnitUtils.get_error_ap_status(target_unit), "晶清诀");
            let data = Math.floor(target_unit["最大气血"] * 0.15);
            if (data >= target_unit["等级"] * 12) {
                data = target_unit["等级"] * 12;
            }
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "晶清诀", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "女儿村", "花护")) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "花护", src_unit["等级"]);
            }
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        },
        "消耗触发": function (fight_data, fight_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "花果山", "显圣")) {
                G.FightStatusUtils.add_unit_status(fight_data, fight_unit, fight_unit, "显圣", 69);
            }
        }
    },
    "慈航普度": {
        "技能类型": "恢复",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [150, "特技消耗"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            // 不可操作的情况下使用扣血
            if (index === 0 && src_unit["不可操作"] === undefined) {
                if (src_unit["气血"] > src_unit["最大气血"] * 0.1) {
                    let dx = Math.floor(src_unit["气血"] - src_unit["最大气血"] * 0.1)
                    src_unit["气血"] = Math.floor(src_unit["最大气血"] * 0.1)
                    fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["扣除气血"] = dx;
                }
                if (src_unit["气血上限"]) {
                    src_unit["气血上限"] = Math.floor(src_unit["最大气血"] * 0.1);
                }
                G.FightUnitUtils.remove_unit_mp(src_unit, src_unit["魔法"]);
            }
            // 恢复目标气血并复活
            if (target_unit["编号"] !== src_unit["编号"]) {
                target_unit["死亡"] = undefined;
                let data = Math.floor(target_unit["最大气血"])
                data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "慈航普度", data);
                G.FightUnitUtils.add_unit_hp(target_unit, data);
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["复活"] = true;
                G.FightUtils.add_waiting_play_time(fight_data, 1, "慈航普度");
            }
            if (index === target_list.length - 1) {
                if (src_unit["不可操作"]) { //地煞
                    src_unit["气血"] = 0;
                    fight_data["战斗流程"].push({ "流程": 625, "攻击方": src_unit["编号"] });
                    let friend_team = fight_data["队伍数据"][src_unit["队伍下标"]];
                    friend_team.forEach(unit => {
                        if (unit["编号"] !== src_unit["编号"]) {
                            unit["共生"] = true;
                        }
                    });
                }
            }
        },
        "取队友": function (fight_data, fight_unit, max_number, team_data) {
            let member_list = [];
            if (G.FightUnitUtils.get_target_unit_status(fight_unit, fight_unit, 1)) {
                member_list.push(fight_unit);
            }
            for (let index = 0; index < team_data.length; index++) {
                if (member_list.length >= max_number) {
                    return member_list;
                }
                let element = team_data[index]
                if (element["编号"] !== fight_unit["编号"]
                    && G.FightUnitUtils.check_not_rebirth(element)
                    && (element["类型"] === "角色" || element["类型"] === "怪物")) {
                    member_list.push(element);
                }
            }
            return member_list;
        }
    },
    "金刚怒目": {
        "技能类型": "恢复",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (target_unit["气血"] <= 0 || target_unit["类型"] === "bb" || src_unit["编号"] === target_unit["编号"]) {
                return 0;
            } else {
                return 1;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [80, "特技消耗"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightUnitUtils.add_fen_nu(target_unit, 80, true);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["愤怒"] = target_unit["愤怒"];
        }
    },
    "心疗术": {
        "技能类型": "恢复",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [60, "特技消耗"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let data = Math.floor(target_unit["最大气血"] * 0.06 + 400)
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "心疗术", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        }
    },
    "命归术": {
        "技能类型": "恢复",
        "指定对象": "自己",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [130, "特技消耗"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let data = Math.floor(target_unit["最大气血"] * 0.5)
            if (data >= target_unit["等级"] * 20) {
                data = target_unit["等级"] * 20;
            }
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "命归术", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        }
    },
    "气归术": {
        "技能类型": "恢复",
        "指定对象": "自己",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [60, "特技消耗"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let data = Math.floor(target_unit["最大气血"] * 0.09 + 600);
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "命疗术", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        }
    },
    "命疗术": {
        "技能类型": "恢复",
        "指定对象": "自己",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [90, "特技消耗"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let data = Math.floor(target_unit["最大气血"] * 0.09 + 600);
            data = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "命疗术", data);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
        }
    },
    "凝气诀": {
        "技能类型": "恢复",
        "指定对象": "自己",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [60, "特技消耗"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let data = Math.floor(target_unit["最大魔法"] * 0.1 + 150);
            G.FightUnitUtils.add_unit_mp(src_unit, data);
        }
    },
    "凝神诀": {
        "技能类型": "恢复",
        "指定对象": "自己",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [90, "特技消耗"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let data = Math.floor(target_unit["最大魔法"] * 0.15 + 250);
            G.FightUnitUtils.add_unit_mp(src_unit, data);
        }
    },
    "诅咒之伤": {
        "技能类型": "固伤",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "特技消耗"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let damage = target_unit["气血"] * 0.2
            if (damage < 1) {
                damage = 1;
            } else if (damage >= src_unit["等级"] * 40) {
                damage = src_unit["等级"] * 40;
            }
            return Math.floor(damage);
        }
    },
    "吸血特技": {
        "技能类型": "固伤",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [70, "特技消耗"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let damage = target_unit["气血"] * 0.2;
            if (damage < 1) {
                damage = 1;
            } else if (damage >= src_unit["等级"] * 40) {
                damage = src_unit["等级"] * 40;
            }
            let hp = damage;
            if (hp >= src_unit["等级"] * 12) {
                hp = src_unit["等级"] * 12;
            }
            G.FightComputingUtils.add_target_hp_and_play(fight_data, src_unit, hp);
            return Math.floor(damage);
        }
    },
    "太极护法": {
        "技能类型": "增益",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [90, "特技消耗"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["太极护法"] = {};
            target_unit["法术状态"]["太极护法"]["回合"] = 3;
        },
        "被攻击减法伤": function (fight_data, src_unit, target_unit, remove_damage_ratio) {
            remove_damage_ratio = 0.5;
        }
    },
    "罗汉金钟": {
        "技能类型": "增益",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            let value = 150;
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "化生寺", "静气")) {
                value -= 15;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "无底洞", "罗汉")) {
                value -= 4;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "花果山", "显圣")) {
                value -= 8;
            }
            return [value, "特技消耗"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            if (fight_unit["奇经八脉"] && fight_unit["奇经八脉"]["罗汉"]) {
                return { "回合": 4 }
            }
            return { "回合": 3 };
        },
        "消耗触发": function (fight_data, fight_unit) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "花果山", "显圣")) {
                G.FightStatusUtils.add_unit_status(fight_data, fight_unit, fight_unit, "显圣", 69);
            }
        },
        "被攻击减法伤": function (fight_data, src_unit, target_unit, remove_damage_ratio) {
            remove_damage_ratio = 0.5;
        }
    },
    "心如明镜": {
        "技能类型": "增益",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "特技消耗"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["心如明镜"] = {};
            target_unit["法术状态"]["心如明镜"]["回合"] = 4;
        }
    },
    "流云诀": {
        "技能类型": "增益",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "特技消耗"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "速度": Math.floor(target_unit["速度"] * 0.1) };
        }
    },
    "啸风诀": {
        "技能类型": "增益",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [80, "特技消耗"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let sd = Math.floor(target_unit["速度"] * 0.05)
            if (fight_unit["门派"] === "天宫" && fight_unit["奇经八脉"]["余韵"]) {
                sd = Math.floor(sd * 1.5)
            }
            return { "回合": 999, "速度": sd };
        }
    },
    "金刚不坏": {
        "技能类型": "增益",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightUnitUtils.add_hu_dun_for_lt_hp(fight_data, target_unit, target_unit["等级"] * 18);
            return false;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [90, "特技消耗"];
        }
    },
    "菩提心佑": {
        "技能类型": "增益",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [150, "特技消耗"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightUnitUtils.add_hu_dun_for_lt_hp(fight_data, target_unit, target_unit["等级"] * 12);
            return false;
        }
    },
    "野兽之力": {
        "技能类型": "增益",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "特技消耗"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "伤害": Math.floor(target_unit["伤害"] * 0.1) };
        }
    },
    "魔兽之印": {
        "技能类型": "增益",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [70, "特技消耗"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let sh = Math.floor(target_unit["速度"] * 0.05)
            if (fight_unit["门派"] === "天宫" && fight_unit["奇经八脉"]["余韵"]) {
                sh = Math.floor(sh * 1.5)
            }
            return { "回合": 999, "伤害": sh };
        }
    },
    "光辉之甲": {
        "技能类型": "增益",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [40, "特技消耗"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "防御": Math.floor(target_unit["防御"] * 0.1) };
        }
    },
    "圣灵之甲": {
        "技能类型": "增益",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [80, "特技消耗"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let fy = Math.floor(target_unit["防御"] * 0.05)
            if (fight_unit["门派"] === "天宫" && fight_unit["奇经八脉"]["余韵"]) {
                fy = Math.floor(fy * 1.5)
            }
            return { "回合": 999, "防御": fy };
        }
    },
    "修罗咒": {
        // 受到攻击时，将伤害的一半反作用给对方，效果持续6回合(每次反弹不超过人物等级×8)
        "技能类型": "增益",
        "指定对象": "自己",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [120, "特技消耗"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["修罗咒"] = {};
            target_unit["法术状态"]["修罗咒"]["回合"] = 6;
        },
        "反震计算": function (fight_data, src_unit, target_unit, damage) {
            if (damage >= 4 && target_unit["法术状态"]["修罗咒"]) {
                let fz_damage = Math.floor(damage * 0.5);
                if (fz_damage >= target_unit["等级"] * 8) {
                    fz_damage = target_unit["等级"] * 8;
                }
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["反震伤害"] = fz_damage;
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["反震死亡"] = G.FightComputingUtils.computing_remove_hp(fight_data, target_unit, src_unit, fz_damage);
                G.FightUtils.add_waiting_play_time(fight_data, 1, "修罗咒");
            }
        }
    },
    "身似菩提": {
        // 将自己受到的法术反作用给施法者（针对某些特殊情况下无效），效果持续两回合
        "技能类型": "增益",
        "指定对象": "自己",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [130, "特技消耗"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["身似菩提"] = {};
            target_unit["法术状态"]["身似菩提"]["回合"] = 2;
        },
        "被攻击法伤反弹": function (fight_data, src_unit, target_unit, skill_name, damage) {
            let cureent_index = fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"].length - 1;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][cureent_index]["反弹"] = true;
            let js_target = target_unit;
            if (src_unit["被反弹"] === undefined) {
                G.FightComputingUtils.remove_hp_js_and_play(fight_data, target_unit, js_target, damage, skill_name);
                src_unit["被反弹"] = true;
            }
            G.FightUtils.add_waiting_play_time(fight_data, 1, "身似菩提");
            return true;
        }
    },
    "放下屠刀": {
        "技能类型": "减益",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "特技消耗"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "伤害": Math.floor(target_unit["伤害"] * 0.1) };
        }
    },
    "笑里藏刀": {
        "技能类型": "减益",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            let value = 40;
            if (G.FightUnitUtils.check_fight_unit_jingmai(fight_unit, "女儿村", "花护")) {
                value -= 4;
            }
            return [value, "特技消耗"];
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["愤怒"]) {
                G.FightUnitUtils.remove_fen_nu(target_unit, 70);
                if (G.FightUnitUtils.check_unit_shen_qi_skill(src_unit, "泪光盈盈")) {
                    target_unit -= 6 * src_unit["神器"]["等级"];
                }
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["愤怒"] = target_unit["愤怒"];
            }
        }
    },
    "碎甲术": {
        "技能类型": "减益",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [80, "特技消耗"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "防御": Math.floor(target_unit["防御"] * 0.05) };
        }
    },
    "河东狮吼": {
        "技能类型": "减益",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "特技消耗"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let sh = Math.floor(target_unit["伤害"] * 0.05)
            if (fight_unit["门派"] === "天宫" && fight_unit["奇经八脉"]["余韵"]) {
                sh = Math.floor(sh * 1.5)
            }
            return { "回合": 999, "伤害": sh };
        }
    },
    "破甲术": {
        "技能类型": "减益",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [35, "特技消耗"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "防御": Math.floor(target_unit["防御"] * 0.1) };
        }
    },
    "凝滞术": {
        "技能类型": "减益",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [35, "特技消耗"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 999, "速度": Math.floor(target_unit["速度"] * 0.1) };
        }
    },
    "停陷术": {
        "技能类型": "减益",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [80, "特技消耗"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let sd = Math.floor(target_unit["速度"] * 0.05)
            if (fight_unit["门派"] === "天宫" && fight_unit["奇经八脉"]["余韵"]) {
                sd = Math.floor(sd * 1.5)
            }
            return { "回合": 999, "速度": sd };
        }
    },
    "死亡之音": {
        "技能类型": "减益",
        "特技": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [90, "特技消耗"];
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let jn = ["催眠符", "失心符", "落魄符", "失忆符", "失魂符", "定身符", "莲步轻舞", "错乱", "日月乾坤", "含情脉脉"];
            let djc = src_unit["等级"] - target_unit["等级"];
            if (G.RandomUtils.chance(djc + 30)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, G.RandomUtils.random_get_array(jn), src_unit["等级"]);
            }
        }
    },

    //                    召唤兽                    //
    "力劈华山": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [fight_unit["等级"] + 20, "魔法"];
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            let num = src_unit["伤害"] - target_unit["伤害"];
            if (num >= src_unit["等级"] * 8) {
                num = src_unit["等级"] * 8;
            }
            damage += num;
            if (target_unit["内丹属性"]["玉砥柱"]) {
                damage = damage * (1 - target_unit["内丹属性"]["玉砥柱"]);
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        },
        "物理连击触发": function (fight_data, src_unit, target_unit, target_list, attack_number) {
            //添加特殊效果
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["特殊效果"] = `力劈华山${attack_number}`;
            if (attack_number === 1) {
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["战斗法术"] = "力劈华山";
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["寄存目标"] = target_list.map(e => e["编号"]);
            }
        }
    },
    "法术防御": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [Math.floor(fight_unit["等级"] / 2 + 50), "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["法术防御"] = {};
            target_unit["法术状态"]["法术防御"]["回合"] = 6;
        },
        "变身": function (fight_unit) {
            fight_unit["法术防御"] = 0.2;
        },
        "取消变身": function (fight_unit) {
            fight_unit["法术防御"] = undefined;
        },
        "被攻击减法伤": function (fight_data, src_unit, target_unit, remove_damage_ratio) {
            remove_damage_ratio = 0.65;
        }
    },
    // TODO
    "苍鸾怒击": {
        // 普通物理攻击发生必杀或连击时，临时提升10%伤害力随机攻击另一个目标，每回合最多触发一次。
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 2, "伤害": Math.floor(target_unit["伤害"] * 0.2), "速度": Math.floor(target_unit["速度"] * 0.2) };
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["苍鸾怒击"] = 1;
        }
    },
    // TODO
    "嗜血追击": {
        //使用物理攻击击倒目标时，会继续攻击另一个目标一次。此效果每回合只会触发一次
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (attack_number, skill_level) {
            return [0, "无"];
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["嗜血追击"] = 1;
        }
    },
    // TODO
    "乘胜追击": {
        // 通攻击或连击达到4次时，额外攻击敌人2次。(额外攻击的伤害结果降低60%)
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (attack_number, skill_level) {
            return [0, "无"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 0.4, "叠加伤害": 0, "重复提示": false, "连击次数": 2 };
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["乘胜追击"] = 0;
        }
    },
    "观照万象": {
        "技能类型": "法术",
        "冷却回合": function (fight_unit) { return 150 },
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let sl = Math.floor(skill_level / 30 + 1)
            if (sl >= 3) {
                sl = 3;
            }
            return sl;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * attack_number, "魔法"];
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["主动技能"].push({ "名称": "观照万象", "等级": fight_unit["等级"] });
        }
    },


    "地狱烈火": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let sl = Math.floor(skill_level / 30 + 1)
            if (sl >= 3) {
                sl = 3;
            }
            return sl;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * attack_number, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = src_unit["等级"] * 2.2 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("无", target_list.length, src_unit["等级"]);
            if (target_unit["内丹属性"]["阴伤"]) {
                damage = damage * 1.15;
            }
            if (src_unit["神来气旺"] && target_index === 0) {
                damage = damage * 1.2;
            }

            if (target_unit["统御属性"] && target_unit["统御属性"]["炫火乱舞"]) {
                fl_ratio = fl_ratio * (1 - target_unit["统御属性"]["炫火乱舞"])
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "奔雷咒": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let sl = Math.floor(skill_level / 30 + 1)
            if (sl >= 3) {
                sl = 3;
            }
            return sl;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * attack_number, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = src_unit["等级"] * 2.2 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("无", target_list.length, src_unit["等级"]);
            damage = damage * fl_ratio;
            if (target_unit["内丹属性"]["阴伤"]) {
                damage = damage * 1.15;
            }
            if (src_unit["共鸣"]) {
                damage = damage * 1.1;
            }
            if (target_unit["统御属性"] && target_unit["统御属性"]["炫火乱舞"]) {
                fl_ratio = fl_ratio * (1 - target_unit["统御属性"]["炫火乱舞"]);
            }
            return [Math.floor(damage)];
        }
    },
    "水漫金山": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let sl = Math.floor(skill_level / 30 + 1)
            if (sl >= 3) {
                sl = 3;
            }
            return sl;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * attack_number, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = src_unit["等级"] * 2.2 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("无", target_list.length, src_unit["等级"]);
            if (target_unit["内丹属性"]["狂怒"]) {
                damage = damage * 1.15;
            }
            if (target_unit["统御属性"] && target_unit["统御属性"]["大浪淘沙"]) {
                fl_ratio = fl_ratio * (1 - target_unit["统御属性"]["大浪淘沙"]);
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "泰山压顶": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let sl = Math.floor(skill_level / 30 + 1)
            if (sl >= 3) {
                sl = 3;
            }
            return sl;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * attack_number, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = src_unit["等级"] * 2 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("无", target_list.length, src_unit["等级"]);
            if (target_unit["内丹属性"]["狂怒"]) {
                damage = damage * 1.15;
            }
            if (target_unit["统御属性"] && target_unit["统御属性"]["大浪淘沙"]) {
                fl_ratio = fl_ratio * (1 - target_unit["统御属性"]["大浪淘沙"]);
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "水攻": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1;
            G.NeiDanData.default["电魂闪"]["驱散算法"](fight_data, src_unit, target_unit);
            if (target_unit["统御属性"] && target_unit["统御属性"]["大浪淘沙"]) {
                fl_ratio = fl_ratio * (1 - target_unit["统御属性"]["大浪淘沙"]);
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "落岩": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1;
            G.NeiDanData.default["电魂闪"]["驱散算法"](fight_data, src_unit, target_unit);
            if (target_unit["统御属性"] && target_unit["统御属性"]["大浪淘沙"]) {
                fl_ratio = fl_ratio * (1 - target_unit["统御属性"]["大浪淘沙"]);
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "雷击": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit)
            if (src_unit["共鸣"]) {
                damage = damage * 1.1;
            }
            G.NeiDanData.default["电魂闪"]["驱散算法"](fight_data, src_unit, target_unit);
            if (target_unit["统御属性"] && target_unit["统御属性"]["炫火乱舞"]) {
                damage = damage * (1 - target_unit["统御属性"]["炫火乱舞"]);
            }
            return [Math.floor(damage)];
        }
    },
    "烈火": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1;
            G.NeiDanData.default["电魂闪"]["驱散算法"](fight_data, src_unit, target_unit);
            if (target_unit["统御属性"] && target_unit["统御属性"]["炫火乱舞"]) {
                fl_ratio = fl_ratio * (1 - target_unit["统御属性"]["炫火乱舞"]);
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "超级三昧真火": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 8 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1;
            G.NeiDanData.default["电魂闪"]["驱散算法"](fight_data, src_unit, target_unit);
            if (target_unit["统御属性"] && target_unit["统御属性"]["炫火乱舞"]) {
                fl_ratio = fl_ratio * (1 - target_unit["统御属性"]["炫火乱舞"]);
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "月光": {
        "技能类型": "特殊",
        "提示": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let target_count = Math.floor(skill_level / 30);
            return Math.min(target_count, 3);
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [100, "魔法"];
        },
        "特殊算法": function (fight_data, src_unit, target_unit, skill_level) {
            G.FightAPSkillUtils.computing_ap_skill(fight_data, src_unit, target_unit, "月光");
        },
        "法术伤害系数": function (fight_data, src_unit, target_unit, target_list, damage_ratio) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 311;
            damage_ratio = 0.5;
        }
    },
    "上古灵符": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [Math.floor(fight_unit["等级"] / 3 + 30), "魔法"];
        },
        "随机法术": function (src_unit, target_list) {
            return G.RandomUtils.random_get_array(["上古灵符_冰冻", "上古灵符_流沙", "上古灵符_心火", "上古灵符_怒雷"]);
        }
    },
    "上古灵符_心火": {
        "技能类型": "法术",
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1;
            G.FightUnitUtils.remove_unit_mp(target_unit, Math.floor(target_unit["最大魔法"] * 0.05));
            G.NeiDanData.default["电魂闪"]["驱散算法"](fight_data, src_unit, target_unit);
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "上古灵符_冰冻": {
        "技能类型": "法术",
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1;
            if (G.RandomUtils.chance(10)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "冰冻", 11);
            }
            G.NeiDanData.default["电魂闪"]["驱散算法"](fight_data, src_unit, target_unit);
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "上古灵符_怒雷": {
        "技能类型": "法术",
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1.1;
            G.NeiDanData.default["电魂闪"]["驱散算法"](fight_data, src_unit, target_unit);
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "上古灵符_流沙": {
        "技能类型": "法术",
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 5 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit)
            let fl_ratio = 1;
            if (G.RandomUtils.chance(20) && target_unit["愤怒"]) {
                G.FightUnitUtils.consummer_unit_fen_nu(target_unit, Math.floor(target_unit["愤怒"] * 0.1));
            }
            G.NeiDanData.default["电魂闪"]["驱散算法"](fight_data, src_unit, target_unit);
            return [Math.floor(damage * fl_ratio)];
        }
    },

    "冰冻": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["冰冻"] = {};
            target_unit["法术状态"]["冰冻"]["回合"] = 2;
        }
    },
    "八凶法阵": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 3;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [Math.floor(fight_unit["等级"] / 3 + 30), "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 2.9 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("无", target_list.length, src_unit["等级"]);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let add_status = false;
            if (src_unit["魔力"]) {
                if (src_unit["魔力"] > (src_unit["等级"] * 4) && G.RandomUtils.chance(30)) {
                    add_status = true;
                } else if (G.RandomUtils.chance(10)) {
                    add_status = true;
                }
            }
            if (add_status) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, `八凶法阵（${G.RandomUtils.random_get_array(["红", "黄", "蓝", "白"])}）"`, src_unit["等级"]);
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "柳暗花明": {
        "层数上限": 2,
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let jc = 1.25;
            if (fight_unit["法连"] >= 30) {
                jc = 1.5;
            }
            fight_unit["柳暗花明"] = jc;
            return { "回合": 99, "层数": 1 };
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["与生俱来"] = 1;
        }
    },
    "八凶法阵（红）": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 2, "伤害": Math.floor(target_unit["伤害"] * 0.08) };
        }
    },
    "八凶法阵（黄）": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 2, "防御": Math.floor(target_unit["防御"] * 0.08) };
        }
    },
    "八凶法阵（蓝）": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 2, "法伤": Math.floor(target_unit["法伤"] * 0.08) };
        }
    },
    "八凶法阵（白）": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 2, "速度": Math.floor(target_unit["速度"] * 0.08) };
        }
    },
    "叱咤风云": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 3;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [50, "魔法"];
        },
        "法术连击": function (fight_data, src_unit, target_unit, skill_level) {
            for (let index = 0; index < 3; index++) {
                if (G.RandomUtils.chance(src_unit["法连"])) {
                    if (src_unit["内丹属性"]["双星爆"] !== undefined) {
                        G.FightAPSkillUtils.computing_ap_skill_damage(fight_data, src_unit, target_unit, "叱咤风云", skill_level, 0.55 + src_unit["内丹属性"]["双星爆"]);
                    } else {
                        G.FightAPSkillUtils.computing_ap_skill_damage(fight_data, src_unit, target_unit, "叱咤风云", skill_level, 0.55);
                    }
                } else {
                    break;
                }
            }
            if (src_unit["法连"] && G.RandomUtils.chance(src_unit["法连"])) {
                let lahm = 1
                if (src_unit["柳暗花明"] && src_unit["法术状态"]["柳暗花明"]) {
                    lahm = src_unit["柳暗花明"]
                    G.FightStatusUtils.canel_unit_status(fight_data, "柳暗花明", src_unit);
                }
                if (src_unit["内丹属性"]["双星爆"]) {
                    G.FightAPSkillUtils.computing_ap_skill_damage(fight_data, src_unit, target_unit, "叱咤风云", skill_level, (0.5 * lahm + src_unit["内丹属性"]["双星爆"]));
                } else if (src_unit["门派"] === "神木林") {
                    //重光 门派特色
                    let ratio = 0.5;
                    if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "神木林", "追击") && G.FightUnitUtils.consummer_fengling(fight_data, src_unit, 1) === 1) {
                        ratio = 0.8;
                    }
                    G.FightAPSkillUtils.computing_ap_skill_damage(fight_data, src_unit, target_unit, "叱咤风云", skill_level, ratio * lahm);
                } else {
                    G.FightAPSkillUtils.computing_ap_skill_damage(fight_data, src_unit, target_unit, "叱咤风云", skill_level, 0.5 * lahm);
                }
            } else {
                if (src_unit["柳暗花明"]) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "柳暗花明", 11, 1);
                }
            }
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("无", target_list.length, src_unit["等级"]);
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "流沙轻音": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let sl = Math.floor(skill_level / 20)
            if (sl >= 5) {
                sl = 5;
            } else if (sl < 1) {
                sl = 1
            }
            return sl;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [attack_number * 30, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("无", target_list.length, src_unit["等级"]);
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "食指大动": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let sl = Math.floor(skill_level / 20)
            if (sl >= 5) {
                sl = 5;
            } else if (sl < 1) {
                sl = 1
            }
            return sl;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [attack_number * 30, "魔法"];
        },
        "随机法术": function (src_unit, target_list) {
            return G.RandomUtils.random_get_array(["食指大动_香蕉", "食指大动_菠萝", "食指大动_西瓜"]);
        }
    },
    "食指大动_香蕉": {
        "技能类型": "法术",
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 108;
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("无", target_list.length, src_unit["等级"]);
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "食指大动_菠萝": {
        "技能类型": "法术",
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("无", target_list.length, src_unit["等级"]);
            damage = damage * 1.2;
            return [Math.floor(damage * fl_ratio)];
        },
        "法爆几率": function (fight_data, src_unit, target_unit, fbjl) {
            fbjl += 30;
        }
    },
    "食指大动_西瓜": {
        "技能类型": "法术",
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("无", target_list.length, src_unit["等级"]);
            damage = damage * 1.5;
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "天降灵葫": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let sx = Math.floor(skill_level / 30 + 2)
            if (sx >= 5) {
                sx = 5
            }
            return G.RandomUtils.generate_random(1, sx)
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [Math.floor(fight_unit["等级"] / 3 + 30), "魔法"];
        },
        "随机法术": function (src_unit, target_list) {
            if (target_list.length === 1) {
                return "天降灵葫_小";
            } else if (target_list.length <= 3) {
                return "天降灵葫_中";
            } else if (target_list.length <= 5) {
                return "天降灵葫_大";
            }
        }
    },
    "天降灵葫_大": {
        "技能类型": "法术",
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = src_unit["等级"] * 5 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("无", target_list.length, src_unit["等级"]);
            if (fl_ratio < 0.7) {
                fl_ratio = 0.7;
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "天降灵葫_中": {
        "技能类型": "法术",
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = src_unit["等级"] * 4 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("无", target_list.length, src_unit["等级"]);
            if (fl_ratio < 0.7) {
                fl_ratio = 0.7;
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "天降灵葫_小": {
        "技能类型": "法术",
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("无", target_list.length, src_unit["等级"]);
            if (fl_ratio < 0.7) {
                fl_ratio = 0.7;
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "扶摇万里": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let sx = Math.floor(skill_level / 15 + 1)
            if (sx >= 10) {
                sx = 10
            }
            if (fight_data["PK战斗"]) {
                sx = 3
            }
            return sx
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [attack_number * 12, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1.1 - target_list.length * 0.1;
            if (fl_ratio <= 0.5) {
                fl_ratio = 0.5;
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "水击三千": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [Math.floor(fight_unit["等级"] / 2 + 30), "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 1.1, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            damage += src_unit["等级"];
            if (src_unit["唯一鲲鹏"]) {
                damage = damage * 1.6;
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2.6, "浮空概率": 0 };
        }
    },
    "北冥之渊": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 5
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [Math.floor(attack_number * 20), "魔法"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["北冥之渊"] = {};
            target_unit["法术状态"]["北冥之渊"]["回合"] = 1;
        },
        "指定目标": function (fight_data, src_unit, target_unit, target_count) {
            return G.FightUtils.get_friend_team_group_survive_bb_unit(fight_data, src_unit, 5);
        },
        "攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * 1.3;
        }
    },
    "鲲鹏出场": {
        "技能类型": "恢复",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return 0;
        }
    },
    "武神之怒": {
        "技能类型": "物理",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 10
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [1, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 1, "叠加伤害": 0.15, "重复提示": false, "连击次数": 6 };
        },
        "物理连击触发": function (fight_data, src_unit, target_unit, target_list, attack_number) {
            if (attack_number === 1) {
                //全屏法术
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["全屏法术"] = "武神之怒";
            }
        }
    },
    "刀光剑影": {
        "技能类型": "法术",
        "佛法加成": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 10
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [1, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = src_unit["等级"] * 5 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1 - target_list.length * 0.02;
            if (fl_ratio <= 0.4) {
                fl_ratio = 0.4;
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "超级飞砂走石": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let sx = Math.floor(skill_level / 15 + 1)
            if (sx >= 10) {
                sx = 10
            }
            return sx
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [attack_number * 12, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1.1 - target_list.length * 0.05;
            if (fl_ratio <= 0.5) {
                fl_ratio = 0.5;
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    ////////////////
    "自爆": {
        "技能类型": "固伤",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return 0;
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            return Math.floor(src_unit["等级"] * 5 + target_unit["气血"] * 0.1);
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 500;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["伤害"] = src_unit["气血"];
            src_unit["气血"] = 0;
        }
    },
    "夜舞倾城": {
        "技能类型": "固伤",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [Math.floor(fight_unit["等级"] / 2 + 50), "魔法"];
        },
        "固伤算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let xl_ratio = src_unit["法术修炼"] - target_unit["抗法修炼"];
            let damage = src_unit["力量"] * 3 + src_unit["速度"];
            if (target_unit["类型"] === "角色") {
                damage = damage / 2;
            }
            if (src_unit["龙胄铠"]) {
                damage = damage / 2;
            }
            if (src_unit["内丹属性"]["玉砥柱"]) {
                damage = damage = damage * (1 - target_unit["内丹属性"]["玉砥柱"]);
            }
            return Math.floor(damage);
        }
    },
    "牛刀小试": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 2
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [20, "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": true, "重复次数": 1, "起始伤害": 1.2, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        }
    },
    "剑荡四方": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 3;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0.1, "气血"];
        },
        "变身": function (fight_unit) {
            fight_unit["主动技能"].push({ "名称": "剑荡四方", "等级": fight_unit["等级"] });
        },
        "取消变身": function (fight_unit) {
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 0.8, "叠加伤害": -0.2, "重复提示": false, "连击次数": 1 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            let close_hp = Math.floor(src_unit["气血"] * 0.1);
            let die = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, src_unit, close_hp, "剑荡四方");
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾死亡"] = die;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾气血"] = close_hp
        }
    },
    "善恶有报": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [fight_unit["等级"] + 10, "魔法"];
        },
        "概率增伤回血": function (fight_data, src_unit, target_unit, damage_result) {
            if (G.RandomUtils.chance(30)) {
                damage_result["类型"] = 2;
                damage_result["伤害"] = Math.floor(damage_result["伤害"] * 0.2);
                if (damage_result["伤害"] < 1) {
                    damage_result["伤害"] = 1;
                }
                if (target_unit["气血"] === target_unit["最大气血"]) {
                    fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["假动作"] = true;
                    fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["返回"] = true;
                    return false;
                }
            } else if (damage_result["类型"] !== 2) {
                damage_result["伤害"] = Math.floor(damage_result["伤害"] * 2);
                if (target_unit["内丹属性"]["玉砥柱"]) {
                    damage_result["伤害"] = damage_result["伤害"] * (1 - target_unit["内丹属性"]["玉砥柱"]);
                }
            }
        }
    },
    "特色善恶有报": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [fight_unit["等级"] + 10, "魔法"];
        },
        "概率增伤回血": function (fight_data, src_unit, target_unit, damage_result) {
            if (G.RandomUtils.chance(40)) {
                damage_result["类型"] = 2;
                damage_result["伤害"] = Math.floor(damage_result["伤害"] * 0.4);
                if (damage_result["伤害"] < 1) {
                    damage_result["伤害"] = 1;
                }
                if (target_unit["气血"] === target_unit["最大气血"]) {
                    fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["假动作"] = true;
                    fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["返回"] = true;
                    return false;
                }
            } else if (damage_result["类型"] !== 2) {
                damage_result["伤害"] = Math.floor(damage_result["伤害"] * 3);
                if (target_unit["内丹属性"]["玉砥柱"]) {
                    damage_result["伤害"] = damage_result["伤害"] * (1 - target_unit["内丹属性"]["玉砥柱"]);
                }
            }
        }
    },

    "惊心一剑": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [Math.floor(fight_unit["等级"] / 2 + 10), "魔法"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 0.9, "叠加伤害": 0, "重复提示": false, "连击次数": 1 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            if (target_unit["内丹属性"]["玉砥柱"]) {
                damage = damage * (1 - target_unit["内丹属性"]["玉砥柱"]);
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        },
        "掉血计算": function (fight_data, src_unit, target_unit, damage) {
            G.FightUnitUtils.remove_unit_mp(fight_data, target_unit, Math.floor(damage / 10 + (target_unit["等级"] / 2) * 1.25));
        }
    },
    "壁垒击破": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [fight_unit["等级"] + 10, "魔法"];
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            defense = defense * 0.95;
            if (target_unit["特殊状态"]["防御技能"]) {
                if (target_unit["特殊状态"]["防御技能"] === 1) {
                    defense = defense - Math.floor(target_unit["等级"] * 0.6);
                } else {
                    defense = defense - Math.floor(target_unit["等级"] * 0.8);
                }
            }
            if (target_unit["内丹属性"]["玉砥柱"]) {
                damage = damage * (1 - target_unit["内丹属性"]["玉砥柱"]);
            }
        },
        "变身": function (fight_unit) {
            fight_unit["主动技能"].push({ "名称": "壁垒击破", "等级": fight_unit["等级"] });
        },
        "取消变身": function (fight_unit) {
        }
    },
    "弱点火": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["弱点火"] = {};
            target_unit["法术状态"]["弱点火"]["回合"] = 3;
        },
        "变身": function (fight_unit) {
            fight_unit["弱点火"] = 1;
        },
        "取消变身": function (fight_unit) {
            fight_unit["弱点火"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["弱点火"] = 1;
        }
    },
    "弱点土": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["弱点土"] = {};
            target_unit["法术状态"]["弱点土"]["回合"] = 3;
        },
        "变身": function (fight_unit) {
            fight_unit["弱点土"] = 1;
        },
        "取消变身": function (fight_unit) {
            fight_unit["弱点土"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["弱点土"] = 1;
        }
    },
    "弱点水": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["弱点水"] = {};
            target_unit["法术状态"]["弱点水"]["回合"] = 3;
        },
        "变身": function (fight_unit) {
            fight_unit["弱点水"] = 1;
        },
        "取消变身": function (fight_unit) {
            fight_unit["弱点水"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["弱点水"] = 1;
        }
    },
    "弱点雷": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["弱点雷"] = {};
            target_unit["法术状态"]["弱点雷"]["回合"] = 3;
        },
        "变身": function (fight_unit) {
            fight_unit["弱点雷"] = 1;
        },
        "取消变身": function (fight_unit) {
            fight_unit["弱点雷"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["弱点雷"] = 1;
        }
    },
    "超级神迹复活": {
        "技能类型": "恢复",
        "是否特技": false,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            if (G.FightUnitUtils.is_no_revive(target_unit) || target_unit["类型"] === "bb" || (target_unit["气血上限"] && target_unit["气血上限"] <= 0)) {
                return 0;
            } else {
                return 1;
            }
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let data = Math.floor(target_unit["等级"] * 20);
            G.FightUnitUtils.add_unit_hp(target_unit, data);
            target_unit["死亡"] = undefined;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = data;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["复活"] = true;
        }
    },
    "超级壁垒击破": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [fight_unit["等级"] + 10, "魔法"];
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            defense = defense * 0.88;
            if (target_unit["特殊状态"]["防御技能"]) {
                if (target_unit["特殊状态"]["防御技能"] === 1) {
                    defense = defense - Math.floor(target_unit["等级"] * 0.6);
                } else {
                    defense = defense - Math.floor(target_unit["等级"] * 0.8);
                }
            }
            if (target_unit["内丹属性"]["玉砥柱"]) {
                damage = damage * (1 - target_unit["内丹属性"]["玉砥柱"]);
            }
        }
    },
    "超级地狱烈火": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let sl = Math.floor(skill_level / 30 + 1)
            if (sl >= 3) {
                sl = 3;
            }
            return sl;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * attack_number, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = src_unit["等级"] * 2.5 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit)
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("无", target_list.length, src_unit["等级"]);
            if (target_unit["内丹属性"]["阴伤"]) {
                damage = damage * 1.15;
            }
            if (src_unit["神来气旺"] && target_index === 0) {
                damage = damage * 1.2;
            }
            if (G.RandomUtils.chance(25)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "弱点火", src_unit["等级"]);
            }
            if (target_unit["统御属性"] && target_unit["统御属性"]["炫火乱舞"]) {
                fl_ratio = fl_ratio * (1 - target_unit["统御属性"]["炫火乱舞"]);
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "超级泰山压顶": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let sl = Math.floor(skill_level / 30 + 1)
            if (sl >= 3) {
                sl = 3;
            }
            return sl;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * attack_number, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = src_unit["等级"] * 2.5 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit) //*3
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("无", target_list.length, src_unit["等级"]);
            if (target_unit["内丹属性"]["狂怒"]) {
                damage = damage * 1.15;
            }
            if (G.RandomUtils.chance(25)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "弱点土", src_unit["等级"]);
            }
            if (target_unit["统御属性"] && target_unit["统御属性"]["大浪淘沙"]) {
                fl_ratio = fl_ratio * (1 - target_unit["统御属性"]["大浪淘沙"]);
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "超级水漫金山": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let sl = Math.floor(skill_level / 30 + 1)
            if (sl >= 3) {
                sl = 3;
            }
            return sl;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * attack_number, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = src_unit["等级"] * 2.5 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("无", target_list.length, src_unit["等级"]);
            if (target_unit["内丹属性"]["狂怒"]) {
                damage = damage * 1.15;
            }
            if (G.RandomUtils.chance(25)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "弱点水", src_unit["等级"]);
            }
            if (target_unit["统御属性"] && target_unit["统御属性"]["大浪淘沙"]) {
                fl_ratio = fl_ratio * (1 - target_unit["统御属性"]["大浪淘沙"]);
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "超级奔雷咒": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            let sl = Math.floor(skill_level / 30 + 1)
            if (sl >= 3) {
                sl = 3;
            }
            return sl;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [30 * attack_number, "魔法"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["流程"] = 205;
            let damage = src_unit["等级"] * 2.5 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit)
            let fl_ratio = G.FightSkillUtils.get_fl_ratio("无", target_list.length, src_unit["等级"]);
            damage = damage * fl_ratio;
            if (target_unit["内丹属性"]["阴伤"]) {
                damage = damage * 1.15;
            }
            if (G.RandomUtils.chance(25)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "弱点雷", src_unit["等级"]);
            }
            if (src_unit["共鸣"]) {
                damage = damage * 1.1;
            }
            if (target_unit["统御属性"] && target_unit["统御属性"]["炫火乱舞"]) {
                fl_ratio = fl_ratio * (1 - target_unit["统御属性"]["炫火乱舞"]);
            }
            return [Math.floor(damage)];
        }
    },

    "超级永恒": {
        "技能类型": "增益",
        "冷却回合": function (fight_unit) { return 150 },
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["超级永恒"] = {};
            target_unit["法术状态"]["超级永恒"]["回合"] = 3;
            target_unit["法术状态"]["超级永恒"]["回溯"] = { "气血": target_unit["气血"], "魔法": target_unit["魔法"] };
            target_unit["法术状态"]["超级永恒"]["可增回合"] = 6;
        }
    },
    "死亡召唤": {
        "技能类型": "物理",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [fight_unit["等级"] + 10, "魔法"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            if (custom_data) {
                return { "回合": custom_data }
            }
            return { "回合": 10 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            if (target_unit["内丹属性"]["玉砥柱"]) {
                damage = damage * (1 - target_unit["内丹属性"]["玉砥柱"]);
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        },
        "结尾附加": function (fight_data, src_unit, target_list, skill_level, attack_count) {
            if (G.RandomUtils.chance(10) && target_list[0]["法术状态"]["死亡召唤"] === undefined) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_list[0], "死亡召唤", src_unit["等级"]);
            }
        }
    },
    "灵能激发": {
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 5, "法伤": Math.floor(target_unit["法伤"] * 0.25) };
        }
    },
    "无畏布施": {
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [Math.floor(fight_unit["等级"] / 2 + 50), "魔法"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "无畏布施（减）", skill_level);
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 3, "法防": Math.floor(target_unit["法防"] * 0.1), "防御": Math.floor(target_unit["防御"] * 0.1) };
        },

    },
    "无畏布施（减）": {
        "技能类型": "减益",
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 3, "法防": Math.floor(target_unit["法防"] * 0.1), "防御": Math.floor(target_unit["防御"] * 0.1) };
        }
    },
    "遗志": {
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 5, "层数": 1 };
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级遗志") && !fight_unit["已加技能"].has("超级遗志")) {
                fight_unit["遗志"] = 1;
            }
        },
        "攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * (1 + src_unit["法术状态"]["遗志"]["层数"] * 0.05)
        }
    },
    "高级遗志": {
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 5, "层数": 1 };
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级遗志")) {
                fight_unit["遗志"] = 2;
                fight_unit["已加技能"].add("高级遗志");
            }
        },
        "攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * (1 + src_unit["法术状态"]["遗志"]["层数"] * 0.1)
        }
    },
    "超级遗志": {
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 5, "层数": 1 };
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["遗志"] = 3;
            fight_unit["已加技能"].add("超级遗志");
        },
        "攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * (1 + src_unit["法术状态"]["遗志"]["层数"] * 0.15)
        }
    },
    "理直气壮": {
        "提示": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (attack_number, skill_level) {
            return [0, "无"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 1, "叠加伤害": 0, "重复提示": false, "连击次数": 3 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["理直气壮"] = true;
            if (fight_unit["减攻击"] === undefined) {
                fight_unit["减攻击"] = 1;
            }
            fight_unit["减攻击"] = fight_unit["减攻击"] * 0.8;
        }
    },
    "披坚执锐": {
        "技能类型": "待定",
        "主动触发": function (fight_data, src_unit) {
            // if src_unit["披坚执锐"] && #src_unit["披坚执锐"]>0 && src_unit["魔法"]>=100 && G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "昂扬")===false ){
            // 	if src_unit["指令"].参数 === src_unit["披坚执锐"][src_unit["披坚执锐"].可选编号].名称 ){ //主动选择披坚执锐套装
            // 		战斗数据:减少魔法(编号,100)
            // 		let sjb = src_unit["披坚执锐"]
            // 		let 随机1=取随机数(1,#sjb)
            // 		for i=1,5 do
            // 			if 随机1===src_unit["指令"].附加 ){
            // 				随机1=取随机数(1,#sjb)
            // 			else
            // 				break
            // 			end
            // 		end

            // 		src_unit["披坚执锐"].可用编号=src_unit["指令"].附加
            // 		src_unit["披坚执锐"].可选编号=随机1

            // 		if G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "潜心") ){
            // 			src_unit[""]潜心={回合=4}
            // 		end
            // 		if G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "怒伤") ){
            // 			战斗数据:增加愤怒(编号, 10)
            // 		end
            // 		发送数据(src_unit[""]连接id, 5524, {id=编号, 追加法术=src_unit["披坚执锐"]})
            // 		战斗数据.战斗流程[#战斗数据.战斗流程+1]={流程=802,攻击方=编号,target_unit=编号,技能=src_unit["披坚执锐"][src_unit["披坚执锐"].可用编号].名称}
            // 	end
            // end
        },
        // 披挂上阵触发 逐胜触发
        "被动触发": function (fight_data, src_unit, target_unit, custom_data) {
            // TODO 可用目标位套装的追加技能，目前还没有做套装属性
            if (src_unit["披坚执锐"]["可用编号"] === undefined) {
                //随机取一个目标
                let keys = Object.keys(src_unit["披坚执锐"]);
                src_unit["披坚执锐"]["可用编号"] = G.RandomUtils.random_get_array(keys);
            }
            let gl = 0;
            if (src_unit["披坚执锐"]["可用编号"] && src_unit["披坚执锐"][src_unit["披坚执锐"]["可用编号"]]) {
                gl = src_unit["披坚执锐"][src_unit["披坚执锐"]["可用编号"]]["追加概率"] || 0;
            }
            let fj = 5;
            if (src_unit["潜心"]) {
                fj = fj + 100;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "笃志")) {
                fj = fj + 20;
                if (!fight_data["PK战斗"]) {
                    gl += 30;
                }
            }
            if (src_unit["披坚执锐"]["昂扬"]) {
                fj = fj + 50;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "肃杀") && src_unit["法术状态"]["杀气诀"]) {
                fj = fj + 35;
            }
            gl = Math.floor(gl + gl * fj / 100);
            if (G.RandomUtils.chance(gl)) {
                // 添加状态
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "攻伐")) {
                    G.FightStatusUtils.add_unit_status(fight_data, src_unit, src_unit, "攻伐", 69);
                }
                if (custom_data) {
                    // 披挂上阵触发 
                    // 两次概率追加法术
                    for (let index = 0; index < 2; index++) {
                        if (G.RandomUtils.chance(gl)) {
                            src_unit["指令"]["类型"] = "法术";
                            src_unit["触发追加"] = 1;
                            src_unit["指令"]["参数"] = src_unit["披坚执锐"][src_unit["披坚执锐"]["可用编号"]]["名称"];
                            G.FightAPSkillUtils.computing_ap_skill(fight_data, src_unit, target_unit, src_unit["指令"]["参数"]);
                        }
                    }
                } else {
                    // 追加一次法术
                    src_unit["指令"]["类型"] = "法术";
                    src_unit["触发追加"] = 1;
                    src_unit["指令"]["参数"] = src_unit["披坚执锐"][src_unit["披坚执锐"]["可用编号"]]["名称"];
                    G.FightAPSkillUtils.computing_ap_skill(fight_data, src_unit, target_unit, src_unit["指令"]["参数"]);
                }
            }
        }
    },
    //NPC特殊技能
    "龙鸣虎啸": {
        "不可行动": true,
        "技能类型": "群封",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 5
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["龙鸣虎啸"] = {};
            target_unit["法术状态"]["龙鸣虎啸"]["回合"] = 1;
        },
        "必中": true,
        "指定目标": function (fight_data, src_unit, target_unit, target_count) {
            return G.FightUtils.get_enemy_team_group_survive_bb_unit(fight_data, src_unit, target_unit, target_count);
        }
    },
    // --------------------------------召唤兽技能------------------------------------------------
    "复活": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": target_unit["特殊状态"]["鬼魂术"] };
        }
    },
    "顾盼生姿": {
        // TODO 可以简化效果实现
        "技能类型": "增益",
        // 每次使用主动技能，提升主人0.5等级的封印命中等级。(最多4层，在主人封印成功时清空)
        "层数上限": 4,
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["顾盼生姿"] = {};
            target_unit["法术状态"]["顾盼生姿"]["回合"] = 999;
            target_unit["法术状态"]["顾盼生姿"]["层数"] = 1;
        },
        "法攻后触发": function (fight_data, src_unit, target_unit_list, skill_name, skill_level) {
            src_unit["特殊状态"]["顾盼生姿"] += 1;
            let master = G.FightUtils.get_fight_unit_by_number(src_unit["主人编号"]);
            // 加状态
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, master, "顾盼生姿", 1);
            // 清空旧的状态加成
            G.FightStatusUtils.clear_status_data(src_unit, "顾盼生姿");
            master["法术状态"]["顾盼生姿"]["封印命中等级"] = Math.floor(master["封印命中等级"] * (1 + master["法术状态"]["顾盼生姿"]["层数"] * 0.5));
            // 重新计算加成
            G.FightStatusUtils.computing_status_data(src_unit, "顾盼生姿");
        },
        "物攻后触发": function (fight_data, src_unit, target_unit_list, skill_name, skill_level) {
            src_unit["特殊状态"]["顾盼生姿"] += 1;
            let master = G.FightUtils.get_fight_unit_by_number(src_unit["主人编号"]);
            // 加状态
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, master, "顾盼生姿", 1);
            // 清空旧的状态加成
            G.FightStatusUtils.clear_status_data(src_unit, "顾盼生姿");
            master["法术状态"]["顾盼生姿"]["封印命中等级"] = Math.floor(master["封印命中等级"] * (1 + master["法术状态"]["顾盼生姿"]["层数"] * 0.5));
            // 重新计算加成
            G.FightStatusUtils.computing_status_data(src_unit, "顾盼生姿");
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["特殊状态"]["顾盼生姿"] = 1;
        }
    },
    "灵刃": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["灵刃"] = {};
            target_unit["法术状态"]["灵刃"]["回合"] = 4;
        },
        "攻击物伤结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * src_unit["法术状态"]["灵刃"]["等级"]
        }
    },
    "灵法": {
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["灵法"] = {};
            target_unit["法术状态"]["灵法"]["回合"] = 4;
        },
        "攻击法伤结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * src_unit["法术状态"]["灵法"]["等级"];
        }
    },
    "灵断": {
        // 第二回合以后进场时，几率对自身造成30%气血上限的伤害，无视敌方神佑、鬼魂类技能，持续4#回合，气血上限降低 (带有鬼魂类或者神佑技能时，进场对自己造成60%气血上限伤害)
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["灵断"] = {};
            target_unit["法术状态"]["灵断"]["回合"] = 4;
        }
    },
    "护佑": {
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (attack_number, skill_level) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["护佑"] = {};
            target_unit["法术状态"]["护佑"]["回合"] = 2;
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage -= target_unit["法术状态"]["护佑"]["等级"];
        }
    },
    "阳护": {
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (attack_number, skill_level) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["阳护"] = {};
            target_unit["法术状态"]["阳护"]["回合"] = 1;
        }
    },
    "御风": {
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (attack_number, skill_level) {
            return [0, "无"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 3, "速度": skill_level };
        }
    },
    "怒吼": {
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (attack_number, skill_level) {
            return [0, "无"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 2, "伤害": skill_level };
        }
    },
    "逆境": {
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (attack_number, skill_level) {
            return [0, "无"];
        },
        "算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.relieve_status(fight_data, target_unit, G.FightUnitUtils.get_error_ap_status(target_unit), "玉清诀");
        }
    },
    "进阶必杀": {
        // 第2回合及以后进入战斗时，提升15%的必杀几率持续5回合，且遂回合减少20%效果。
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["进阶必杀"] = {};
            target_unit["法术状态"]["进阶必杀"]["回合"] = 5;
            target_unit["法术状态"]["进阶必杀"]["加必杀"] = 15;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (fight_data["回合"] > 2) {
                if (!fight_unit["已加技能"].has("高级进阶必杀") && !fight_unit["已加技能"].has("超级进阶必杀")) {
                    G.FightStatusUtils.add_unit_status(fight_data, fight_unit, fight_unit, "进阶必杀", 1);
                }
            }
        },
        "物理攻击必杀几率": function (fight_data, src_unit, target_unit, kill_gl) {
            kill_gl += target_unit["法术状态"]["进阶必杀"]["必杀几率"];
        }
    },
    "高级进阶必杀": {
        // 第2回合及以后进入战斗时，提升30%的必杀几率持续5回合，且遂回合减少20%效果。
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["高级进阶必杀"] = {};
            target_unit["法术状态"]["高级进阶必杀"]["回合"] = 5;
            target_unit["法术状态"]["高级进阶必杀"]["必杀几率"] = 30;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (fight_data["回合"] > 2) {
                if (!fight_unit["已加技能"].has("超级进阶必杀")) {
                    fight_unit["已加技能"].add("高级进阶必杀");
                    G.FightStatusUtils.add_unit_status(fight_data, fight_unit, fight_unit, "高级进阶必杀", 1);
                }
            }
        },
        "物理攻击必杀几率": function (fight_data, src_unit, target_unit, kill_gl) {
            kill_gl += target_unit["法术状态"]["超级进阶必杀"]["必杀几率"];
        }
    },
    "超级进阶必杀": {
        // 第2回合及以后进入战斗时；\n#G/提升30%的必杀几率并增加50%必杀伤害倍率；\n#G/持续5回合，且逐回合减少20%效果
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["超级进阶必杀"] = {};
            target_unit["法术状态"]["超级进阶必杀"]["回合"] = 5;
            target_unit["法术状态"]["超级进阶必杀"]["必杀几率"] = 30;
            target_unit["法术状态"]["超级进阶必杀"]["必杀倍率"] = 0.5;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (fight_data["回合"] > 2) {
                fight_unit["已加技能"].add("超级进阶必杀");
                G.FightStatusUtils.add_unit_status(fight_data, fight_unit, fight_unit, "超级进阶必杀", 1);
            }
        },
        "物理攻击必杀几率": function (fight_data, src_unit, target_unit, kill_gl) {
            kill_gl += target_unit["法术状态"]["超级进阶必杀"]["必杀几率"];
        },
        "攻击物理暴击倍率": function (fight_data, src_unit, target_unit, bj_bl) {
            bj_bl += target_unit["法术状态"]["超级进阶必杀"]["必杀倍率"];
        }
    },
    "进阶法爆": {
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["进阶法爆"] = {};
            target_unit["法术状态"]["进阶法爆"]["回合"] = 5;
            target_unit["法术状态"]["进阶法爆"]["加法暴"] = 15;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级进阶法爆") && !fight_unit["已加技能"].has("超级进阶法爆")) {
                fight_unit["进阶法爆"] = 10;
            }
        }
    },
    "高级进阶法爆": {
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["高级进阶法爆"] = {};
            target_unit["法术状态"]["高级进阶法爆"]["回合"] = 5;
            target_unit["法术状态"]["高级进阶法爆"]["加法暴"] = 30;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级进阶法爆")) {
                fight_unit["进阶法爆"] = 20;
                fight_unit["已加技能"].add("高级进阶法爆");
            }
        }
    },
    "超级进阶法爆": {
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 5 };
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["进阶法爆"] = 21;
            fight_unit["已加技能"].add("超级进阶法爆");
        }
    },
    "盾气": {
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["盾气"] = {};
            target_unit["法术状态"]["盾气"]["回合"] = 6;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("隐身") && !fight_unit["已加技能"].has("高级隐身")) {
                if (!fight_unit["已加技能"].has("高级盾气") && !fight_unit["已加技能"].has("超级盾气")) {
                    fight_unit["盾气"] = 1;
                }
            }
        }
    },
    "高级盾气": {
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["高级盾气"] = {};
            target_unit["法术状态"]["高级盾气"]["回合"] = 6;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("隐身") && !fight_unit["已加技能"].has("高级隐身")) {
                if (!fight_unit["已加技能"].has("超级盾气")) {
                    fight_unit["盾气"] = 2;
                    fight_unit["已加技能"].add("高级盾气");
                }
            }
        }
    },
    "超级盾气": {
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 5 };
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("隐身") && !fight_unit["已加技能"].has("高级隐身")) {
                fight_unit["盾气"] = 3;
                fight_unit["已加技能"].add("超级盾气");
                if (fight_unit["主人编号"]) {
                    let master = G.FightUtils.get_fight_unit_by_number(fight_unit["主人编号"]);
                    master["盾气"] = 1;
                }
            }
        }
    },
    "碎甲刃": {
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            return { "回合": 4, "防御": skill_level, "负面": "减防御" };
        },
        "被攻击基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            defense -= target_unit["内丹属性"]["碎甲刃"];
        }
    },
    "反击": {
        //受到物理攻击时有30%几率自动反击，反击伤害为正常伤害的50%
        "变身": function (fight_unit) {
            fight_unit["特殊状态"]["反击"] = {};
            fight_unit["特殊状态"]["反击"]["伤害"] = 0.5;
            fight_unit["特殊状态"]["反击"]["概率"] = 30;
        },
        "取消变身": function (fight_unit) {
            fight_unit["特殊状态"]["反击"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级反击") && !fight_unit["已加技能"].has("超级反击")) {
                fight_unit["特殊状态"]["反击"] = {};
                fight_unit["特殊状态"]["反击"]["伤害"] = 0.5;
                fight_unit["特殊状态"]["反击"]["概率"] = 30;
            }
        },
        "被普攻触发": function (fight_data, src_unit, target_unit, damage, bh) {
            // 超级反击 主人首次被伤,必反击
            if (target_unit["类型"] === "角色" && target_unit["参战宝宝"] && target_unit["统计数据"]["被伤统计"]["物理"] === 0) {
                // 找宝宝
                let target_pet_unit = fight_data["队伍数据"][target_unit["队伍下标"]][target_unit["下标"] + 1];
                if (G.FightUnitUtils.get_unit_process_status(fight_data, target_pet_unit)) {
                    // 算伤害
                    let fj_damage = Math.floor(G.FightPhysicalAttack.get_ad_damage(fight_data, target_pet_unit, src_unit) * target_pet_unit["特殊状态"]["反击"]["伤害"]);
                    if (fj_damage < 1) { fj_damage = 1; }
                    fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["超反编号"] = target_pet_unit["编号"];
                    fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["超反击伤害"] = fj_damage;
                    fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["反击死亡"] = G.FightComputingUtils.computing_remove_hp(fight_data, target_pet_unit, src_unit, fj_damage);
                }
            } else if (G.FightUnitUtils.get_unit_process_status(fight_data, target_unit) && G.RandomUtils.chance(target_unit["特殊状态"]["反击"]["概率"]) && !src_unit["特殊状态"]["偷袭"] && !bh) {
                // 超级反击 、反击 、高级反击
                let fj_damage = Math.floor(G.FightPhysicalAttack.get_ad_damage(fight_data, target_unit, src_unit) * target_unit["特殊状态"]["反击"]["伤害"]);
                if (fj_damage < 1) { fj_damage = 1; }
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["反击伤害"] = fj_damage;
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["反击死亡"] = G.FightComputingUtils.computing_remove_hp(fight_data, target_unit, src_unit, fj_damage);
            }
            target_unit["统计数据"]["被伤统计"]["物理"] += 1;
        },
        "物攻后触发": function (fight_data, src_unit, target_unit_list, skill_name, skill_level) {
            // 超级反击 主人首次被伤,必反击
            for (let index = 0; index < target_unit_list.length; index++) {
                let target_unit = target_unit_list[index];
                if (target_unit["类型"] === "角色" && target_unit["参战宝宝"] && target_unit["统计数据"]["被伤统计"]["物理"] === 0) {
                    // 找宝宝
                    let target_pet_unit = fight_data["队伍数据"][target_unit["队伍下标"]][target_unit["下标"] + 1];
                    if (G.FightUnitUtils.get_unit_process_status(fight_data, target_pet_unit)) {
                        // 算伤害
                        let fj_damage = Math.floor(G.FightPhysicalAttack.get_ad_damage(fight_data, target_pet_unit, src_unit) * target_pet_unit["特殊状态"]["反击"]["伤害"]);
                        if (fj_damage < 1) { fj_damage = 1; }
                        fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["超反编号"] = target_pet_unit["编号"];
                        fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["超反击伤害"] = fj_damage;
                        fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["反击死亡"] = G.FightComputingUtils.computing_remove_hp(fight_data, target_pet_unit, src_unit, fj_damage);
                    }
                } else if (G.FightUnitUtils.get_unit_process_status(fight_data, target_unit) && G.RandomUtils.chance(target_unit["特殊状态"]["反击"]["概率"]) && !src_unit["特殊状态"]["偷袭"]) {
                    // 超级反击 、反击 、高级反击
                    let fj_damage = Math.floor(G.FightPhysicalAttack.get_ad_damage(fight_data, target_unit, src_unit) * target_unit["特殊状态"]["反击"]["伤害"]);
                    if (fj_damage < 1) { fj_damage = 1; }
                    fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["反击伤害"] = fj_damage;
                    fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["反击死亡"] = G.FightComputingUtils.computing_remove_hp(fight_data, target_unit, src_unit, fj_damage);
                }
                target_unit["统计数据"]["被伤统计"]["物理"] += 1;
            }
        }
    },
    "高级反击": {
        // "受到物理攻击时有30%几率自动反击，反击的伤害与正常攻击相同
        "变身": function (fight_unit) {
            fight_unit["特殊状态"]["反击"] = {};
            fight_unit["特殊状态"]["反击"]["伤害"] = 1;
            fight_unit["特殊状态"]["反击"]["概率"] = 30;
        },
        "取消变身": function (fight_unit) {
            fight_unit["特殊状态"]["反击"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级反击")) {
                fight_unit["特殊状态"]["反击"] = {};
                fight_unit["特殊状态"]["反击"]["伤害"] = 1;
                fight_unit["特殊状态"]["反击"]["概率"] = 30;
                fight_unit["已加技能"].add("高级反击");
            }
        }
    },
    "超级反击": {
        // 受到普通物理攻击后；\n#G/30%几率用物理攻击反击；在场时主人首次被敌方物理攻击时；必定用物理攻击进行反击
        "变身": function (fight_unit) {
            fight_unit["特殊状态"]["反击"] = {};
            fight_unit["特殊状态"]["反击"]["伤害"] = 1.5;
            fight_unit["特殊状态"]["反击"]["概率"] = 30;
        },
        "取消变身": function (fight_unit) {
            fight_unit["特殊状态"]["反击"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["特殊状态"]["反击"] = {};
            fight_unit["特殊状态"]["反击"]["伤害"] = 1.5;
            fight_unit["特殊状态"]["反击"]["概率"] = 30;
            fight_unit["特殊状态"]["超级反击"] = true;
            fight_unit["已加技能"].add("超级反击");
        }
    },
    "敏捷": {
        "变身": function (fight_unit) {
        },
        "取消变身": function (fight_unit) {
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["速度"] = fight_unit["速度"] * 1.1;
            G.FightStatusUtils.add_unit_status(fight_data, fight_unit, fight_unit, "敏捷", 1)
        },
        "状态算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index, custom_data) {
            target_unit["法术状态"]["敏捷"] = {};
            target_unit["法术状态"]["敏捷"]["回合"] = 999;
        }
    },
    "高级敏捷": {
        "变身": function (fight_unit) {
        },
        "取消变身": function (fight_unit) {
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["速度"] = fight_unit["速度"] * 1.2;
            G.FightStatusUtils.add_unit_status(fight_data, fight_unit, fight_unit, "高级敏捷", 1)
        },
        "状态算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index, custom_data) {
            target_unit["法术状态"]["高级敏捷"] = {};
            target_unit["法术状态"]["高级敏捷"]["回合"] = 999;
        }
    },
    "超级敏捷": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["速度"] = fight_unit["速度"] * 1.2;
        },
        // TODO 概率在行动一次
        "状态算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index, custom_data) {
            target_unit["法术状态"]["超级敏捷"] = {};
            target_unit["法术状态"]["超级敏捷"]["回合"] = 999;
            target_unit["法术状态"]["超级敏捷"]["概率"] = 5;
            target_unit["法术状态"]["超级敏捷"]["触发"] = 0;
        }
    },
    "强力": {
        "变身": function (fight_unit) {
            fight_unit["强力"] = 1;
        },
        "取消变身": function (fight_unit) {
            fight_unit["强力"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["强力"] = 1;
        }
    },
    "高级强力": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["强力"] = 1;
        }
    },
    "超级强力": {
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return 0;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["超级强力"] = {};
            target_unit["法术状态"]["超级强力"]["回合"] = 2;
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["超强力"] = true;
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["强力"] = 1;
            fight_unit["超强力"] = true
        },
        "攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = Math.floor(damage * 0.9);
        }
    },
    "防御": {
        "变身": function (fight_unit) {
            fight_unit["特殊状态"]["防御技能"] = 1;
        },
        "取消变身": function (fight_unit) {
            fight_unit["特殊状态"]["防御技能"] = undefined;
        },
        "技能属性": function (fight_unit) {
            if (!fight_unit["已加技能"].has("高级防御") && !fight_unit["已加技能"].has("超级防御")) {
                fight_unit["特殊状态"]["防御技能"] = 1;
            }
        }
    },
    "高级防御": {
        "变身": function (fight_unit) {
            fight_unit["特殊状态"]["防御技能"] = 2;
        },
        "取消变身": function (fight_unit) {
            fight_unit["特殊状态"]["防御技能"] = undefined;
        },
        "技能属性": function (fight_unit) {
            if (!fight_unit["已加技能"].has("超级防御")) {
                fight_unit["特殊状态"]["防御技能"] = 2;
                fight_unit["已加技能"].add("高级防御");
            }
        }
    },
    "超级防御": {
        "变身": function (fight_unit) {
            fight_unit["特殊状态"]["防御技能"] = 3;
        },
        "取消变身": function (fight_unit) {
            fight_unit["特殊状态"]["防御技能"] = undefined;
        },
        "技能属性": function (fight_unit) {
            fight_unit["特殊状态"]["防御技能"] = 3;
            fight_unit["特殊状态"]["超级防御"] = true
            fight_unit["已加技能"].add("超级防御");
        }
    },
    "反震": {
        // "受到物理攻击时有30%几率给予对方反震，反震伤害为所受伤害的25%"
        "变身": function (fight_unit) {
            fight_unit["特殊状态"]["反震"] = {};
            fight_unit["特殊状态"]["反震"]["概率"] = 30;
            fight_unit["特殊状态"]["反震"]["伤害"] = 0.25;
        },
        "取消变身": function (fight_unit) {
            fight_unit["特殊状态"]["反震"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级反震") && !fight_unit["已加技能"].has("超级反震")) {
                fight_unit["特殊状态"]["反震"] = {};
                fight_unit["特殊状态"]["反震"]["概率"] = 30;
                fight_unit["特殊状态"]["反震"]["伤害"] = 0.25;
            }
        },
        "被普攻触发": function (fight_data, src_unit, target_unit, damage, bh) {
            if (!bh && damage >= 4 && !src_unit["特殊状态"]["偷袭"] && G.RandomUtils.chance(target_unit["特殊状态"]["反震"]["概率"])) { //触发反震 有保护的情况下不会触发反震、反击
                let fz_damage = Math.floor(damage * target_unit["特殊状态"]["反震"]["伤害"]);
                if (target_unit["内丹属性"]["无畏"] && target_unit["特殊状态"]["反震"]) {
                    fz_damage = fz_damage * (1 + src_unit["内丹属性"]["无畏"]);
                }
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["反震伤害"] = fz_damage;
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["反震死亡"] = G.FightComputingUtils.computing_remove_hp(fight_data, target_unit, src_unit, fz_damage);
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][0]["特效"].push("反震");
            }
        }
    },
    "高级反震": {
        // 受到物理攻击时有30%几率给予对方反震，反震伤害为所受伤害的50%
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级反震")) {
                fight_unit["特殊状态"]["反震"] = {};
                fight_unit["特殊状态"]["反震"]["概率"] = 30;
                fight_unit["特殊状态"]["反震"]["伤害"] = 0.5;
                fight_unit["已加技能"].add("高级反震");
            }
        }
    },
    "超级反震": {
        // 受到物理攻击时30%反震对方；\n#G/反震伤害为你所受伤害的60%；
        // 避免避免被敌人连击
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级反震")) {
                fight_unit["特殊状态"]["反震"] = {};
                fight_unit["特殊状态"]["反震"]["概率"] = 30;
                fight_unit["特殊状态"]["反震"]["伤害"] = 0.6;
                fight_unit["特殊状态"]["超级反震"] = true;
                fight_unit["已加技能"].add("超级反震");
            }
        }
    },
    "连击": {
        "变身": function (fight_unit) {
            fight_unit["连击"] = 45;
            if (!fight_unit["减攻击"]) {
                fight_unit["减攻击"] = 1;
            }
            fight_unit["减攻击"] = fight_unit["减攻击"] * 0.75;
        },
        "取消变身": function (fight_unit) {
            fight_unit["连击"] = undefined;
            fight_unit["减攻击"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级连击") && !fight_unit["已加技能"].has("超级连击")) {
                fight_unit["连击"] = 45;
                if (fight_unit["减攻击"] === undefined) {
                    fight_unit["减攻击"] = 1;
                }
                fight_unit["减攻击"] = fight_unit["减攻击"] * 0.75;
            }
        }
    },
    "高级连击": {
        "提示": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (attack_number, skill_level) {
            return [0, "无"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 1, "叠加伤害": 0, "重复提示": false, "连击次数": 2 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            if (src_unit["气贯长虹"]) {
                if (src_unit["连击"] >= 55) {
                    damage = Math.floor(damage * 1.5);
                } else {
                    damage = Math.floor(damage * 1.25);
                }
            }
            if (src_unit["内丹属性"]["阴伤"] && attack_number === 2) {
                damage += src_unit["内丹属性"]["阴伤"];
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级连击")) {
                fight_unit["连击"] = 55;
                if (fight_unit["减攻击"] === undefined) {
                    fight_unit["减攻击"] = 1;
                }
                fight_unit["减攻击"] = fight_unit["减攻击"] * 0.8;
                fight_unit["已加技能"].add("高级连击");
            }
        }
    },
    "超级连击": {
        "提示": true,
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (attack_number, skill_level) {
            return [0, "无"];
        },
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 1, "叠加伤害": 0, "重复提示": false, "连击次数": 3 };
        },
        "额外物理伤害": function (fight_data, src_unit, target_unit, damage, attack_number) {
            if (src_unit["气贯长虹"]) {
                if (src_unit["连击"] >= 55) {
                    damage = Math.floor(damage * 1.5);
                } else {
                    damage = Math.floor(damage * 1.25);
                }
            }
            if (src_unit["内丹属性"]["阴伤"] && attack_number === 2) {
                damage += src_unit["内丹属性"]["阴伤"];
            }
            return { "伤害": damage, "必杀几率": 0, "暴击倍率": 2, "浮空概率": 0 };
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["连击"] = 55;
            fight_unit["超级连击"] = true
            if (fight_unit["减攻击"] === undefined) {
                fight_unit["减攻击"] = 1;
            }
            fight_unit["减攻击"] = fight_unit["减攻击"] * 0.8;
            fight_unit["已加技能"].add("超级连击");
        }
    },
    "飞行": {
        "变身": function (fight_unit) {
            fight_unit["命中"] = Math.floor(fight_unit["命中"] * 1.2);
            fight_unit["躲避"] = Math.floor(fight_unit["躲避"] * 1.2);
        },
        "取消变身": function (fight_unit) {
            fight_unit["命中"] = Math.floor(fight_unit["命中"] * 0.8);
            fight_unit["躲避"] = Math.floor(fight_unit["躲避"] * 0.8);
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级飞行") && !fight_unit["已加技能"].has("超级飞行")) {
                fight_unit["命中"] = Math.floor(fight_unit["命中"] * 1.2);
                fight_unit["躲避"] = Math.floor(fight_unit["躲避"] * 1.2);
                fight_unit["暗器伤害"] = 1.3;
            }
        }
    },
    "高级飞行": {
        "变身": function (fight_unit) {
            fight_unit["命中"] = Math.floor(fight_unit["命中"] * 1.3);
            fight_unit["躲避"] = Math.floor(fight_unit["躲避"] * 1.3);
        },
        "取消变身": function (fight_unit) {
            fight_unit["命中"] = Math.floor(fight_unit["命中"] * 0.7);
            fight_unit["躲避"] = Math.floor(fight_unit["躲避"] * 0.7);
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级飞行")) {
                fight_unit["命中"] = Math.floor(fight_unit["命中"] * 1.3);
                fight_unit["躲避"] = Math.floor(fight_unit["躲避"] * 1.3);
                fight_unit["已加技能"].add("高级飞行");
            }
        }
    },
    "超级飞行": {
        "变身": function (fight_unit) {
            fight_unit["命中"] = Math.floor(fight_unit["命中"] * 1.4);
            fight_unit["躲避"] = Math.floor(fight_unit["躲避"] * 1.4);
        },
        "取消变身": function (fight_unit) {
            fight_unit["命中"] = Math.floor(fight_unit["命中"] * 0.6);
            fight_unit["躲避"] = Math.floor(fight_unit["躲避"] * 0.6);
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["命中"] = Math.floor(fight_unit["命中"] * 1.4)
            fight_unit["躲避"] = Math.floor(fight_unit["躲避"] * 1.4)
            fight_unit["超级飞行"] = true;
            fight_unit["已加技能"].add("超级飞行");
        }
    },
    "夜战": {
        // "具备夜战能力，不受夜间攻防能力下降的影响"
        "变身": function (fight_unit) {
            fight_unit["特殊状态"]["特殊状态"]["夜战"] = true;
        },
        "取消变身": function (fight_unit) {
            fight_unit["特殊状态"]["夜战"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级夜战") && !fight_unit["已加技能"].has("超级夜战")) {
                fight_unit["特殊状态"]["夜战"] = true;
            }
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            if (_SystemHourData["昼夜"] === 1) {
                damage = damage * 1.1;
            }
        }
    },
    "高级夜战": {
        // "具备夜战能力，不受夜间攻防能力下降的影响，
        // TODO 夜间躲避能力提高20%"
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级夜战")) {
                fight_unit["特殊状态"]["夜战"] = true;
                fight_unit["已加技能"].add("高级夜战");
            }
        }
    },
    "超级夜战": {
        // 造成物理伤害提高10%；不受夜间攻防能力下降的影响，
        // TODO 物理躲避能力增加20%，
        // TODO 在攻击时显示目标的气血条。
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["特殊状态"]["夜战"] = true;
            fight_unit["已加技能"].add("超级夜战");
        }
    },
    "感知": {
        "变身": function (fight_unit) {
            fight_unit["感知"] = 0.45;
        },
        "取消变身": function (fight_unit) {
            fight_unit["感知"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级感知") && !fight_unit["已加技能"].has("超级感知")) {
                fight_unit["感知"] = 0.45;
            }
        }
    },
    "高级感知": {
        "变身": function (fight_unit) {
            fight_unit["感知"] = 0.55;
        },
        "取消变身": function (fight_unit) {
            fight_unit["感知"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级感知")) {
                fight_unit["感知"] = 0.55;
                fight_unit["躲避"] = Math.floor(fight_unit["躲避"] * 1.1);
                fight_unit["已加技能"].add("高级感知");
            }
        }
    },
    "超级感知": {
        "变身": function (fight_unit) {
            fight_unit["感知"] = 0.55;
            fight_unit["躲避"] = Math.floor(fight_unit["躲避"] * 1.1);
        },
        "取消变身": function (fight_unit) {
            fight_unit["感知"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["感知"] = 0.65;
            fight_unit["躲避"] = Math.floor(fight_unit["躲避"] * 1.1);
            if (fight_unit["主人编号"]) {
                let master = G.FightUtils.get_fight_unit_by_number(fight_unit["主人编号"]);
                master["感知"] = 0.65;
                master["感知回合"] = 5;
            }
            fight_unit["已加技能"].add("超级感知");
        }
    },
    "再生": {
        "变身": function (fight_unit) {
            fight_unit["再生"] = Math.floor(fight_unit["等级"] * 0.5);
        },
        "取消变身": function (fight_unit) {
            fight_unit["再生"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级再生") && !fight_unit["已加技能"].has("超级再生")) {
                fight_unit["再生"] = Math.floor(fight_unit["等级"] * 0.5);
            }
        }
    },
    "高级再生": {
        "变身": function (fight_unit) {
            fight_unit["再生"] = fight_unit["等级"];
        },
        "取消变身": function (fight_unit) {
            fight_unit["再生"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级再生")) {
                fight_unit["再生"] = fight_unit["等级"];
                fight_unit["已加技能"].add("高级再生");
            }
        }
    },
    "超级再生": {
        "变身": function (fight_unit) {
            fight_unit["再生"] = fight_unit["等级"];
        },
        "取消变身": function (fight_unit) {
            fight_unit["再生"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["超级再生"] = true;
            fight_unit["已加技能"].add("超级再生");
        }
    },
    "冥思": {
        "变身": function (fight_unit) {
            fight_unit["冥思"] = Math.floor(fight_unit["等级"] * 0.25);
        },
        "取消变身": function (fight_unit) {
            fight_unit["冥思"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级冥思") && !fight_unit["已加技能"].has("超级冥思")) {
                fight_unit["冥思"] = Math.floor(fight_unit["等级"] * 0.25);
            }
        }
    },
    "高级冥思": {
        "变身": function (fight_unit) {
            fight_unit["冥思"] = Math.floor(fight_unit["等级"] * 0.5);
        },
        "取消变身": function (fight_unit) {
            fight_unit["冥思"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级冥思")) {
                fight_unit["冥思"] = Math.floor(fight_unit["等级"] * 0.5);
                fight_unit["已加技能"].add("高级冥思");
            }
        }
    },
    "超级冥思": {
        "变身": function (fight_unit) {
            fight_unit["冥思"] = Math.floor(fight_unit["等级"] * 0.75);
        },
        "取消变身": function (fight_unit) {
            fight_unit["冥思"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["冥思"] = Math.floor(fight_unit["等级"] * 0.75);
            if (fight_unit["主人编号"]) {
                let master = G.FightUtils.get_fight_unit_by_number(fight_unit["主人编号"]);
                master["冥思"] = Math.floor(master["等级"] * 0.75);
                master["冥思回合"] = 5;
            }
            fight_unit["已加技能"].add("超级冥思");
        }
    },
    "慧根": {
        "变身": function (fight_unit) {
            fight_unit["慧根"] = 0.75;
        },
        "取消变身": function (fight_unit) {
            fight_unit["慧根"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级慧根") && !fight_unit["已加技能"].has("超级慧根")) {
                fight_unit["慧根"] = 0.75;
            }
        }
    },
    "高级慧根": {
        "变身": function (fight_unit) {
            fight_unit["慧根"] = 0.5;
        },
        "取消变身": function (fight_unit) {
            fight_unit["慧根"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级慧根")) {
                fight_unit["慧根"] = 0.5;
                fight_unit["已加技能"].add("高级慧根");
            }
        }
    },
    "超级慧根": {
        "变身": function (fight_unit) {
            fight_unit["慧根"] = 0.25;
        },
        "取消变身": function (fight_unit) {
            fight_unit["慧根"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["慧根"] = 0.25;
            fight_unit["超级慧根"] = true
            fight_unit["已加技能"].add("超级慧根");
        }
    },
    "必杀": {
        "变身": function (fight_unit) {
            fight_unit["必杀几率"] = fight_unit["必杀几率"] + 10;
        },
        "取消变身": function (fight_unit) {
            fight_unit["必杀几率"] -= 10;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级必杀") && !fight_unit["已加技能"].has("超级必杀")) {
                fight_unit["必杀几率"] += 10;
            }
        }
    },
    "高级必杀": {
        "变身": function (fight_unit) {
            fight_unit["必杀几率"] = fight_unit["必杀几率"] + 20;
        },
        "取消变身": function (fight_unit) {
            fight_unit["必杀几率"] -= 20;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级必杀")) {
                fight_unit["必杀几率"] += 20;
                fight_unit["已加技能"].add("高级必杀");
            }
        }
    },
    "超级必杀": {
        "变身": function (fight_unit) {
            fight_unit["必杀几率"] = fight_unit["必杀几率"] + 25;
        },
        "取消变身": function (fight_unit) {
            fight_unit["必杀几率"] -= 25;
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["必杀几率"] += 25;
            fight_unit["超级必杀"] += 25;
            fight_unit["已加技能"].add("超级必杀");
        }
    },
    "幸运": {
        // 不会受到必杀攻击
        "变身": function (fight_unit) {
            fight_unit["特殊状态"]["幸运"] = true;
        },
        "取消变身": function (fight_unit) {
            fight_unit["特殊状态"]["幸运"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级幸运") && !fight_unit["已加技能"].has("高级幸运")) {
                fight_unit["特殊状态"]["幸运"] = true;
            }
        }
    },
    "高级幸运": {
        "技能属性": function (fight_data, fight_unit) {
            // "不会受到必杀攻击，TODO 并有5%几率躲避敌人的法术攻击"
            if (!fight_unit["已加技能"].has("超级幸运")) {
                fight_unit["特殊状态"]["高级幸运"] = true;
            }
        },
        "被攻击法伤结果": function (fight_data, src_unit, target_unit, damage) {
            if (G.RandomUtils.chance(5)) {
                damage = 0;
            }
        }
    },
    "超级幸运": {
        // 受到的物理/法术伤害暴击倍率降低50%；TODO 有5%的概率免疫受到的攻击
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["特殊状态"]["超级幸运"] = true;
        },
        "被攻击物理暴击倍率": function (fight_data, src_unit, target_unit, bj_bl) { bj_bl = bj_bl * 0.5 },
        "被攻击法术暴击倍率": function (fight_data, src_unit, target_unit, bj_bl) { bj_bl = bj_bl * 0.5 },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            if (G.RandomUtils.chance(5)) {
                damage = 0;
            }
        }
    },
    "永恒": {
        "变身": function (fight_unit) {
            fight_unit["永恒"] = 2;
        },
        "取消变身": function (fight_unit) {
            fight_unit["永恒"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级永恒")) {
                fight_unit["永恒"] = 1.5;
            }
        }
    },
    "高级永恒": {
        "变身": function (fight_unit) {
            fight_unit["永恒"] = 4;
        },
        "取消变身": function (fight_unit) {
            fight_unit["永恒"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["永恒"] = 2;
            fight_unit["已加技能"].add("高级永恒");
        }
    },
    "招架": {
        // "每回合受到的第1次物理伤害结果减免10%"
        "变身": function (fight_unit) {
            fight_unit["特殊状态"]["招架"] = 0.9;
        },
        "取消变身": function (fight_unit) {
            fight_unit["特殊状态"]["招架"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级招架") && !fight_unit["已加技能"].has("超级招架")) {
                fight_unit["特殊状态"]["招架"] = 0.9;
            }
        },
        "被攻击物伤结果": function (fight_data, src_unit, target_unit, damage) {
            // 三个级别都写到一个里
            if (target_unit["统计数据"]["被伤统计"]["物理"] === 0) {
                damage = damage * target_unit["特殊状态"]["招架"];
            }
        }
    },
    "高级招架": {
        // "每回合受到的第1次物理伤害结果减免20%"
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级招架")) {
                fight_unit["特殊状态"]["招架"] = 0.8;
                fight_unit["已加技能"].add("高级招架");
            }
        }
    },
    "超级招架": {
        // 每回合受到的第1次物理伤害结果减免20%；
        // TODO 进战斗时获得一层“金身”；若被召唤成幻魔,“金身”会再次触发"
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["特殊状态"]["招架"] = 0.8;
            fight_unit["特殊状态"]["超级招架"] = true
            fight_unit["已加技能"].add("超级招架");
        }
    },
    "偷袭": {
        // 身手灵敏，不会受到反击和反震。攻击效果增加5%"
        "变身": function (fight_unit) {
            fight_unit["特殊状态"]["偷袭"]["伤害"] = 1.05;
        },
        "取消变身": function (fight_unit) {
            fight_unit["特殊状态"]["偷袭"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级偷袭")) {
                fight_unit["特殊状态"]["偷袭"]["伤害"] = 1.05;
            }
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            // 三种偷袭伤害算法都写到一个里面即可
            if (src_unit["特殊状态"]["偷袭"]) {
                damage = damage * ["特殊状态"]["偷袭"]["伤害"];
            }
        }
    },
    "高级偷袭": {
        // 身手灵敏，不会受到反击和反震，物理攻击效果提高10%
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级偷袭")) {
                fight_unit["特殊状态"]["偷袭"]["伤害"] = 1.1;
                fight_unit["特殊状态"]["高级偷袭"] = true;
                fight_unit["已加技能"].add("高级偷袭");
            }
        }
    },
    "超级偷袭": {
        // 	jns_1 = "避免被敌人反击 避免被敌人反震； 物理伤害效果提升15%；物理普通攻击将无视防御指令"
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["特殊状态"]["偷袭"]["伤害"] = 1.15;
            fight_unit["特殊状态"]["超级偷袭"] = true;
            fight_unit["已加技能"].add("超级偷袭");
        }
    },
    "高级毒": {
        "变身": function (fight_unit) {
            fight_unit["毒"] = 20;
            fight_unit["高级毒"] = 1;
        },
        "取消变身": function (fight_unit) {
            fight_unit["毒"] = undefined;
            fight_unit["高级毒"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["毒"] = 20;
            fight_unit["高级毒"] = 1;
            fight_unit["已加技能"].add("高级毒");
        }
    },
    "超级毒": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["毒"] = 30;
            fight_unit["高级毒"] = 1;
            fight_unit["超级毒"] = 1;
            fight_unit["已加技能"].add("超级毒")
        }
    },
    "驱鬼": {
        // 对鬼魂类怪物的物理、法术伤害效果增加50%，如果将鬼魂类怪物打死，对方将飞出场外而不能复活
        "变身": function (fight_unit) {
            fight_unit["特殊状态"]["驱鬼"] = 1.5;
        },
        "取消变身": function (fight_unit) {
            fight_unit["特殊状态"]["驱鬼"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级驱鬼") && !fight_unit["已加技能"].has("超级驱鬼")) {
                fight_unit["特殊状态"]["驱鬼"] = 1.5;
            }
        },
        "攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            if (target_unit["特殊状态"]["鬼魂术"] || target_unit["鬼魂类"]) {
                damage = damage * target_unit["驱鬼"];
            }
        }
    },
    "高级驱鬼": {
        // 对鬼魂类怪物的物理、法术伤害效果加倍，如果将鬼魂类怪物打死，对方将飞出场外而不能复活
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级驱鬼")) {
                fight_unit["特殊状态"]["驱鬼"] = 2;
                fight_unit["已加技能"].add("高级驱鬼");
            }
        }
    },
    "超级驱鬼": {
        // 对有鬼魂术之敌；物理及法术伤害效果增加100%；
        // 可将鬼魂术之敌击飞，使其不能复活；
        // TODO 双方场上带有鬼魂术单位的伤害降低20%
        // TODO 自身的鬼魂术将无效化
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["特殊状态"]["驱鬼"] = 2;
            fight_unit["特殊状态"]["超级驱鬼"] = true
            fight_unit["特殊状态"]["鬼魂术"] = undefined;
            fight_unit["已加技能"].add("超级驱鬼");
        }
    },
    "魔之心": {
        "变身": function (fight_unit) {
            fight_unit["特殊状态"]["魔之心"] = 1.1;
        },
        "取消变身": function (fight_unit) {
            fight_unit["特殊状态"]["魔之心"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级魔之心") && !fight_unit["已加技能"].has("超级魔之心")) {
                fight_unit["特殊状态"]["魔之心"] = 1.1;
            }
        }
    },
    "高级魔之心": {
        "变身": function (fight_unit) {
            fight_unit["特殊状态"]["魔之心"] = 1.2;
        },
        "取消变身": function (fight_unit) {
            fight_unit["特殊状态"]["魔之心"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级魔之心")) {
                fight_unit["特殊状态"]["魔之心"] = 1.2;
                fight_unit["已加技能"].add("高级魔之心");
            }
        }
    },
    "超级魔之心": {
        "变身": function (fight_unit) {
            fight_unit["特殊状态"]["魔之心"] = 1.25;
        },
        "取消变身": function (fight_unit) {
            fight_unit["特殊状态"]["魔之心"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["特殊状态"]["魔之心"] = 1.25;
            fight_unit["已加技能"].add("超级魔之心");
        }
    },
    "神佑复生": {
        "变身": function (fight_unit) {
            fight_unit["特殊状态"]["神佑"] = 20;
        },
        "取消变身": function (fight_unit) {
            fight_unit["特殊状态"]["神佑"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("鬼魂术") && !fight_unit["已加技能"].has("高级鬼魂术")) {
                if (!fight_unit["已加技能"].has("高级神佑复生") && !fight_unit["已加技能"].has("超级神柚复生")) {
                    fight_unit["特殊状态"]["神佑"] = 20;
                }
                if (fight_unit["类型"] === "角色") {
                    if (fight_unit["修业"]) {
                        if (fight_unit["修业"]["五"] === "返照") {
                            fight_unit["特殊状态"]["神佑"] += 30;
                        }
                    }
                }
            }
        }
    },
    "高级神佑复生": {
        "变身": function (fight_unit) {
            fight_unit["特殊状态"]["神佑"] = 30;
        },
        "取消变身": function (fight_unit) {
            fight_unit["神佑"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("鬼魂术") && !fight_unit["已加技能"].has("高级鬼魂术")) {
                if (!fight_unit["已加技能"].has("超级神柚复生")) {
                    fight_unit["神佑"] = 30;
                    fight_unit["已加技能"].add("高级神佑复生");
                }
                if (fight_unit["类型"] === "角色") {
                    if (fight_unit["修业"]) {
                        if (fight_unit["修业"]["五"] === "返照") {
                            fight_unit["神佑"] = fight_unit["神佑"] + 30;
                        }
                    }
                }
            }
        }
    },
    "超级神柚复生": {
        "变身": function (fight_unit) {
            fight_unit["特殊状态"]["神佑"] = 40;
        },
        "取消变身": function (fight_unit) {
            fight_unit["特殊状态"]["神佑"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("鬼魂术") && !fight_unit["已加技能"].has("高级鬼魂术")) {
                fight_unit["神佑"] = 40;
                fight_unit["已加技能"].add("超级神柚复生");
                if (fight_unit["类型"] === "角色") {
                    if (fight_unit["修业"]) {
                        if (fight_unit["修业"]["五"] === "返照") {
                            fight_unit["神佑"] = fight_unit["神佑"] + 30;
                        }
                    }
                }
            }
        }
    },
    "法术暴击": {
        "变身": function (fight_unit) {
            fight_unit["法暴"] = 15;
        },
        "取消变身": function (fight_unit) {
            fight_unit["法暴"] = undefined;
        },
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级法术暴击") && !fight_unit["已加技能"].has("超级法术暴击")) {
                fight_unit["法暴"] = 10;
            }
        }
    },
    "高级法术暴击": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级法术暴击")) {
                fight_unit["法暴"] = 15;
                fight_unit["已加技能"].add("高级法术暴击");
            }
        }
    },
    "超级法术暴击": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["法暴"] = 20;
            fight_unit["已加技能"].add("超级法术暴击");
        }
    },
    "怒击": {
        "技能类型": "物理",
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 1, "叠加伤害": 0.15, "重复提示": false, "连击次数": 1 };
        }
    },
    "猛击": {
        "技能类型": "物理",
        "基础物理计算": function (fight_data, src_unit, skill_level, target_list) {
            return { "返回": false, "重复次数": 1, "起始伤害": 1, "叠加伤害": 0.15, "重复提示": false, "连击次数": 2 };
        }
    },
    "血沸": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1 - target_list.length * 0.1;
            if (fl_ratio <= 0.4) {
                fl_ratio = 0.4;
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "寒冰监牢": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            let fl_ratio = 1;
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "归墟": {
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * 3 + G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit)
            let fl_ratio = 1 - target_list.length * 0.1;
            if (fl_ratio <= 0.4) {
                fl_ratio = 0.4;
            }
            return [Math.floor(damage * fl_ratio)];
        }
    },
    "重生": {
        "技能类型": "恢复",
        "取队友": function (fight_data, fight_unit, max_number, team_data) {
            let member_list = [];
            if (G.FightUnitUtils.get_target_unit_status(fight_unit, fight_unit, 1)) {
                member_list.push(fight_unit);
            }
            for (let index = 0; index < team_data.length; index++) {
                if (member_list.length >= max_number) {
                    return member_list;
                }
                let element = team_data[index]
                if (element["编号"] !== fight_unit["编号"]
                    && G.FightUnitUtils.check_not_rebirth(element)
                    && (element["类型"] === "角色" || element["类型"] === "怪物")) {
                    member_list.push(element);
                }
            }
            return member_list;
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let hp = Math.floor(target_unit["最大气血"]);
            hp = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "重生", hp);
            G.FightUnitUtils.add_unit_hp(target_unit, hp);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = hp;
        }
    },
    "逍遥游": {
        // "提升自身20%速度，每回合首次受到的物法伤害降低20%，
        // 受到的物理、法术伤害暴击倍率降低50%\n
        // TODO 第二回合后进场时，对血量百分比最低的单位释放水击三千或扶摇万里，
        // TODO 若场上无其他超级鲲鹏，则出场伤害提升150%，鲲鹏专属技能"
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["特殊状态"]["逍遥游"] = true;
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            if (target_unit["统计数据"]["被伤统计"]["物理"] === 0) {
                damage = damage * 0.8;
            }
        },
        "法术伤害结果": function (fight_data, src_unit, target_unit, damage, fbjl, fbbl) {
            fbbl = fbbl - 0.5;
        },
        "被攻击物理暴击倍率": function (fight_data, src_unit, target_unit, bj_bl) {
            bj_bl -= 0.5;
        }
    },
    "浮云神马": {
        "技能属性": function (fight_data, fight_unit) {
            let master = G.FightUtils.get_fight_unit_by_number(fight_data, fight_unit["主人编号"]);
            fight_unit["浮云神马"] = { "回合": 10, "速度": Math.floor(fight_unit["速度"] * 0.1) };
            master["浮云神马"] = { "回合": 10, "速度": Math.floor(master["速度"] * 0.1) };
        },
        "回合开始前": function (fight_data, fight_unit) {
            // 浮云神马速度加成
            if (fight_unit["浮云神马"] && fight_unit["浮云神马"]["回合"] === fight_unit["回合"]) {
                fight_unit["临时速度"] += fight_unit["浮云神马"]["速度"] * 0.1;
            }
        }
    },
    "千钧一怒": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["千钧一怒"] = true;
        }
    },
    "独行": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级独行")) {
                fight_unit["抵抗封印等级"] = 250;
            }
        }
    },
    "高级独行": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["抵抗封印等级"] = 500;
            fight_unit["已加技能"].add("高级独行");
        }
    },
    "克敌五行": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["克敌五行"] = true;
        }
    },
    "势如破竹": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["势如破竹"] = true;
        }
    },
    "凭风借力": {
        // 每次物理攻击提升必杀时12.5%的总伤害结果。(最多4层，在触发必杀时清空)
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["特殊状态"]["凭风借力"] = 0;
        },
        "攻击物理暴击伤害": function (fight_data, src_unit, target_unit, damage) {
            src_unit["特殊状态"]["凭风借力"] += 1;
            damage += Math.floor(damage * src_unit["凭风借力"] * 0.125);
            if (src_unit["特殊状态"]["凭风借力"] >= 4) {
                src_unit["特殊状态"]["凭风借力"] = undefined;
            }
        }
    },
    "拘魂索命": {
        // 使用法术或法术连击达到4次时，对气血百分比最低的数人额外释放1次法术(额外法术的伤害结果隆低20%)
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["特殊状态"]["拘魂索命"] = 0;
        },
        "法攻后触发": function (fight_data, src_unit, target_unit_list, skill_name, skill_level) {
            if (!src_unit["特殊状态"]["触发拘魂索命"]) {
                src_unit["特殊状态"]["拘魂索命"] += 1;
                if (src_unit["特殊状态"]["拘魂索命"] >= 4) {
                    let new_target_unit = G.FightUtils.get_enemy_hp_min_unit(fight_data, src_unit);
                    G.FightAPSkillUtils.computing_ap_skill_damage(fight_data, src_unit, new_target_unit, skill_name, skill_level, 0.8);
                    src_unit["特殊状态"]["触发拘魂索命"] = 1;
                }
            }
        }
    },
    "溜之大吉": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["躲避"] = Math.floor(fight_unit["躲避"] * 1.1);
        }
    },
    "神出鬼没": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["神出鬼没"] = true;
        }
    },
    "昼伏夜出": {
        // 夜间物理伤害效果不会减少并提高10%躲避率增加10%伤害
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["特殊状态"]["昼伏夜出"] = true;
        },
        "基础物理伤害": function (fight_data, src_unit, target_unit, damage, defense) {
            if (_SystemHourData["昼夜"] === 1) {
                damage = damage * 1.1;
            }
        }
    },
    "凝光炼彩": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["凝光炼彩"] = true
        },
        "扣血触发": function (fight_data, src_unit, target_unit, remove_hp) {
            // 凝光炼彩概率触发添加护盾
            if (G.RandomUtils.chance(25)) {
                G.FightUnitUtils.add_hu_dun_for_lt_hp(fight_data, target_unit, Math.floor(remove_hp * 0.5));
            }
        }
    },
    "津津有味": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["津津有味"] = true
        }
    },
    "从天而降": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["从天而降"] = true
        }
    },
    "大快朵颐": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["大快朵颐"] = true
        }
    },
    "灵山禅语": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["法防"] = Math.floor(fight_unit["法防"] + (fight_unit["等级"] * fight_unit["成长"]))
            fight_unit["法伤"] = Math.floor(fight_unit["法伤"] * 0.5)
        }
    },
    "风起龙游": {
        // 攻击速度低于自身的目标，提升10%的伤害效果。
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["特殊状态"]["风起龙游"] = 1;
        },
        "攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            if (src_unit["风起龙游"] && src_unit["临时速度"] > target_unit["临时速度"]) {
                damage = damage * 1.1;
            }
        }
    },
    "虎虎生风": {
        // 大幅提升必杀伤害结果。----威风凛凛，虎虎生风！
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["特殊状态"]["虎虎生风"] = 1;
        }
    },
    "神来气旺": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["神来气旺"] = 1;
        },
        "攻击物理暴击倍率": function (fight_data, src_unit, target_unit, bj_bl) {
            bj_bl = bj_bl + 0.7;
        }
    },
    "出其不意": {
        // 使用本回合己方召唤兽末使用过的技能时，造成的伤害结果提升15%
        "技能属性": function (fight_data, fight_unit) {
            if (fight_data["特殊状态"]["出其不意"] === undefined) {
                fight_data["特殊状态"]["出其不意"] = {};
            }
            if (fight_data["特殊状态"]["出其不意"][fight_unit["队伍"]] === undefined) {
                fight_data["特殊状态"]["出其不意"][fight_unit["队伍"]] = { "回合": 1, "技能": new Set() };
            }
            // 触发统计算法
            fight_unit["特殊状态"]["出其不意"] = 1;
        },
        "法攻后触发": function (fight_data, src_unit, target_unit_list, skill_name, skill_level) {
            if (src_unit["认证码"]) {
                let total_data = fight_data["特殊状态"]["出其不意"][src_unit["队伍"]];
                //是否存在当前回合的统计数据
                if (total_data["回合"] === fight_data["回合"]) {
                    total_data["技能"].add(skill_name);
                } else {
                    // 新的回合一定没有使用过 重新初始化内容
                    fight_data["特殊状态"]["出其不意"][src_unit["队伍"]] = { "技能": new Set(), "回合": fight_data["回合"] };
                    fight_data["特殊状态"]["出其不意"][src_unit["队伍"]]["技能"].add(skill_name);
                }
            }
        },
        "物攻后触发": function (fight_data, src_unit, target_unit_list, skill_name, skill_level) {
            if (src_unit["认证码"]) {
                let total_data = fight_data["特殊状态"]["出其不意"][src_unit["队伍"]];
                //是否存在当前回合的统计数据
                if (total_data["回合"] === fight_data["回合"]) {
                    total_data["技能"].add(skill_name);
                } else {
                    // 新的回合一定没有使用过 重新初始化内容
                    fight_data["特殊状态"]["出其不意"][src_unit["队伍"]] = { "技能": new Set(), "回合": fight_data["回合"] };
                    fight_data["特殊状态"]["出其不意"][src_unit["队伍"]]["技能"].add(skill_name);
                }
            }
        }
    },
    "法术反震": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级法术反震")) {
                fight_unit["法术反震"] = 0.25;
            }
        }
    },
    "高级法术反震": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["法术反震"] = 0.5;
            fight_unit["已加技能"].add("高级法术反震")
        }
    },
    "吸血": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级吸血") && !fight_unit["已加技能"].has("超级吸血")) {
                fight_unit["吸血"] = 0.25;
            }
        }
    },
    "高级吸血": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级吸血")) {
                fight_unit["吸血"] = 0.3;
                fight_unit["已加技能"].add("高级吸血");
            }
        }
    },
    "超级吸血": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["吸血"] = 0.3;
            fight_unit["超级吸血"] = true;
            fight_unit["已加技能"].add("超级吸血");
        }
    },
    "气贯长虹": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["气贯长虹"] = 1;
        }
    },
    "义薄云天": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["义薄云天"] = 1;
            if (fight_unit["义薄云天"] === undefined) {
                fight_unit["法伤"] = Math.floor(fight_unit["法伤"] + fight_unit["等级"] * 0.55);
                fight_unit["已加技能"].add("义薄云天");
            }
        }
    },
    "与生俱来": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["与生俱来"] = 1;
        }
    },
    "隐身": {
        // 自动附加地府修罗隐身法术2～3回合，拥有此技能物理攻击能力会降低20%，隐身状态下无法使用法术
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级隐身") && !fight_unit["已加技能"].has("超级隐身")) {
                fight_unit["特殊状态"]["隐身"] = true;
                fight_unit["已加技能"].add("隐身");
                G.FightStatusUtils.add_unit_status(fight_data, fight_unit, fight_unit, "修罗隐身", 1, G.RandomUtils.generate_random(2, 3));
            }
        },
        "攻击物伤结果": function (fight_data, src_unit, target_unit, damage) {
            let ratio = 0.8;
            if (src_unit["内丹属性"]["隐匿击"]) {
                ratio += src_unit["内丹属性"]["隐匿击"];
            }
            damage = damage * ratio;
        }
    },
    "高级隐身": {
        // 自动附加地府修罗隐身法术3～5回合，拥有此技能物理攻击能力会降低15%，隐身状态下无法使用法术
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级隐身")) {
                fight_unit["特殊状态"]["高级隐身"] = true;
                fight_unit["已加技能"].add("高级隐身");
                G.FightStatusUtils.add_unit_status(fight_data, fight_unit, fight_unit, "修罗隐身", 1, G.RandomUtils.generate_random(3, 5));
            }
        },
        "攻击物伤结果": function (fight_data, src_unit, target_unit, damage) {
            let ratio = 0.85;
            if (src_unit["内丹属性"]["隐匿击"]) {
                ratio += src_unit["内丹属性"]["隐匿击"];
            }
            damage = damage * ratio;
        }
    },
    "超级隐身": {
        // 进入战斗后获得修罗隐身状态3~5回合；\n#G/隐身时不会被攻击；\n#G/物理攻击能力降低10%；\n#G/受到的伤害也降低10%；\n#G/隐身时不能施法
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["特殊状态"]["超级隐身"] = true
            fight_unit["已加技能"].add("超级隐身");
            G.FightStatusUtils.add_unit_status(fight_data, fight_unit, fight_unit, "修罗隐身", 1, G.RandomUtils.generate_random(3, 5));
        },
        "攻击物伤结果": function (fight_data, src_unit, target_unit, damage) {
            let ratio = 0.9;
            if (src_unit["内丹属性"]["隐匿击"]) {
                ratio += src_unit["内丹属性"]["隐匿击"];
            }
            damage = damage * ratio;
        }
    },
    "神迹": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级神迹") && !fight_unit["已加技能"].has("超级神迹")) {
                fight_unit["神迹"] = 2;
            }
        },

    },
    "高级神迹": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级神迹")) {
                fight_unit["神迹"] = 2;
                fight_unit["已加技能"].add("高级神迹");
            }
        }
    },
    "超级神迹": {
        "不可封印": true,
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["神迹"] = 2;
            fight_unit["超级神迹"] = true;
            fight_unit["已加技能"].add("超级神迹");
        }
    },
    "鬼魂术": {
        // 死亡5回合后自动复活，不受异常状态影响，但也不能使用药品和食物恢复气血（可以食用包子）
        "不可封印": true,
        "技能属性": function (fight_data, fight_unit) {
            if (fight_unit["欣欣向荣"] === undefined && !fight_unit["已加技能"].has("高级鬼魂术")) {
                fight_unit["特殊状态"]["鬼魂术"] = 5;
                fight_unit["已加技能"].add("鬼魂术");
            }
        }
    },
    "高级鬼魂术": {
        // 死亡5回合后自动复活，不受异常状态影响
        "不可封印": true,
        "技能属性": function (fight_data, fight_unit) {
            if (fight_unit["欣欣向荣"] === undefined) {
                fight_unit["特殊状态"]["鬼魂术"] = 5;
                fight_unit["特殊状态"]["高级鬼魂术"] = true;
                fight_unit["已加技能"].add("高级鬼魂术");
            }
        }
    },
    "鬼念": {
        "不可封印": true,
    },
    "须弥真言": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("圣婴大王")) {
                fight_unit["法伤"] = Math.floor(fight_unit["法伤"] + fight_unit["魔力"] * 0.4);
            }
        }
    },
    "圣婴大王": {
        // 增加自身魔力*0.5的法术伤害力
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["法伤"] = Math.floor(fight_unit["法伤"] + fight_unit["魔力"] * 0.5);
            fight_unit["已加技能"].add("圣婴大王");
        }
    },
    "无上正真": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("无上正真")) {
                fight_unit["伤害"] = Math.floor(fight_unit["伤害"] + fight_unit["力量"] * 0.4)
                fight_unit["已加技能"].add("无上正真");
            }
        }
    },
    "精神集中": {
        // 精神集中，可以抵御封类异常状态，但自己的物理攻击效果也会降低20%
        "不可封印": true,
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["特殊状态"]["超级驱鬼"] && !fight_unit["已加技能"].has("高级精神集中") && !fight_unit["已加技能"].has("超级精神集中")) {
                fight_unit["特殊状态"]["精神集中"] = true;
                fight_unit["伤害"] = Math.floor(fight_unit["伤害"] * 0.8);
            }
        },
        "攻击物伤结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * 0.8;
        }
    },
    "高级精神集中": {
        // 精神集中，可以抵御封类异常状态，躲避力提高10%，但物理攻击能力会降低20%
        "不可封印": true,
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["特殊状态"]["超级驱鬼"] && !fight_unit["已加技能"].has("超级精神集中")) {
                fight_unit["特殊状态"]["高级精神集中"] = true;
                fight_unit["躲避"] = Math.floor(fight_unit["躲避"] * 1.1);
                fight_unit["已加技能"].add("高级精神集中");
            }
        },
        "攻击物伤结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * 0.8;
        }
    },
    "超级精神集中": {
        // 可以抵御封类异常状态，躲避力提高10%，但物理攻击能力会降低20%；\n#G/受到的伤害随机降低1% ~ 10%。
        "不可封印": true,
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["特殊状态"]["超级驱鬼"]) {

                fight_unit["躲避"] = Math.floor(fight_unit["躲避"] * 1.1);
                fight_unit["特殊状态"]["超级精神集中"] = true;
                fight_unit["已加技能"].add("超级精神集中");
            }
        },
        "攻击物伤结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * 0.8;
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            let sjjsh = G.RandomUtils.generate_random(1, 10) / 100;
            damage = damage * (1 - sjjsh);
        }
    },
    "否定信仰": {
        // TODO 不受异常、辅助效果影响，
        // 受到鬼魂类怪物攻击时伤害增加50%，不能同时拥有某些信仰类技能
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级否定信仰") && !fight_unit["已加技能"].has("超级否定信仰")) {
                fight_unit["特殊状态"]["否定信仰"] = true;
            }
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            if (target_unit["鬼魂类"]) {
                damage = damage * 1.5;
            }
        }
    },
    "高级否定信仰": {
        // TODO 不受异常、辅助效果影响，
        // 受法术伤害减少20%，受到鬼魂类怪物攻击时伤害增加50%，不能同时拥有某些信仰类技能
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级否定信仰")) {
                fight_unit["特殊状态"]["高级否定信仰"] = true;
                fight_unit["已加技能"].add("高级否定信仰");
            }
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            if (target_unit["鬼魂类"]) {
                damage = damage * 1.5;
            }
        },
        "被攻击法伤结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * 0.8;
        }
    },
    "超级否定信仰": {
        // TODO 不受异常和增益影响；
        // TODO 其他超级技能不失效，
        // 且每个拥有超级技能提高20%最大气血、提高15%所有伤害、降低5%防御和法防
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["特殊状态"]["超级否定信仰"] = true;
            fight_unit["超级否定信仰"] = 1;
            fight_unit["已加技能"].add("超级否定信仰");

            // 添加超级否定信仰属性
            let count = 0;
            for (let index = 0; index < fight_unit["技能"]; index++) {
                let skill_name = fight_unit["技能"][index];
                if (skill_name.startsWith("超级")) {
                    count++;
                }
            }
            fight_unit["最大气血"] += Math.floor(fight_unit["最大气血"] * (count * 0.2));
            fight_unit["伤害"] += Math.floor(fight_unit["伤害"] * (count * 0.15));
            fight_unit["防御"] -= Math.floor(fight_unit["最大气血"] * (count * 0.05));
            fight_unit["法防"] -= Math.floor(fight_unit["最大气血"] * (count * 0.05));
        }

    },
    "桀骜自恃": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("桀骜自恃")) {
                fight_unit["法暴"] = 50;
            }
        }
    },
    "法术连击": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级法术连击") && !fight_unit["已加技能"].has("超级法术连击")) {
                fight_unit["法连"] = 10;
            }
        }
    },
    "高级法术连击": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级法术连击")) {
                fight_unit["法连"] = 20;
                fight_unit["已加技能"].add("高级法术连击");
            }
        }
    },
    "超级法术连击": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["法连"] = 30;
            fight_unit["已加技能"].add("超级法术连击");
        }
    },
    "法术波动": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级法术波动") && !fight_unit["已加技能"].has("超级法术波动")) {
                fight_unit["特殊状态"]["法术波动上限"] = 120;
                fight_unit["特殊状态"]["法术波动下限"] = 80;
                if (fight_unit["内丹属性"]["法术波动下限"]) {
                    fight_unit["特殊状态"]["法术波动下限"] += fight_unit["内丹属性"]["催心浪"];
                }
            }
        }
    },
    "高级法术波动": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级法术波动")) {
                fight_unit["特殊状态"]["法术波动上限"] = 150;
                fight_unit["特殊状态"]["法术波动下限"] = 50;
                fight_unit["已加技能"].add("高级法术波动");
                if (fight_unit["内丹属性"]["法术波动下限"]) {
                    fight_unit["特殊状态"]["法术波动下限"] += fight_unit["内丹属性"]["催心浪"];
                }
            }
        }
    },
    "超级法术波动": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["特殊状态"]["法术波动上限"] = 200;
            fight_unit["特殊状态"]["法术波动下限"] = 50;
            fight_unit["已加技能"].add("超级法术波动");
            if (fight_unit["内丹属性"]["法术波动下限"]) {
                fight_unit["特殊状态"]["法术波动下限"] += fight_unit["内丹属性"]["催心浪"];
            }
        }
    },
    "法术抵抗": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级法术抵抗") && !fight_unit["已加技能"].has("超级法术抵抗")) {
                fight_unit["伤害"] = 0.95;
            }
        }
    },
    "高级法术抵抗": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级法术抵抗")) {
                fight_unit["法术抵抗"] = 0.9;
                fight_unit["已加技能"].add("高级法术抵抗");
            }
        }
    },
    "超级法术抵抗": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["法术抵抗"] = 0.8;
            fight_unit["已加技能"].add("超级法术抵抗");
        }
    },
    "水属性吸收": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级水属性吸收") && !fight_unit["已加技能"].has("超级水属性吸收")) {
                fight_unit["水吸"] = 1;
            }
        }
    },
    "高级水属性吸收": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级水属性吸收")) {
                fight_unit["水吸"] = 2;
                fight_unit["已加技能"].add("高级水属性吸收");
            }
        }
    },
    "超级水属性吸收": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["水吸"] = 3;
            fight_unit["超水吸"] = true;
            fight_unit["已加技能"].add("超级水属性吸收");
        }
    },
    "雷属性吸收": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级雷属性吸收") && !fight_unit["已加技能"].has("超级雷属性吸收")) {
                fight_unit["雷吸"] = 1;
            }
        }
    },
    "高级雷属性吸收": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级雷属性吸收")) {
                fight_unit["雷吸"] = 2;
                fight_unit["已加技能"].add("高级雷属性吸收");
            }
        }
    },
    "超级雷属性吸收": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["雷吸"] = 3;
            fight_unit["超雷吸"] = true;
            fight_unit["已加技能"].add("超级雷属性吸收");
        }
    },
    "火属性吸收": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级火属性吸收") && !fight_unit["已加技能"].has("超级火属性吸收")) {
                fight_unit["火吸"] = 1;
            }
        }
    },
    "高级火属性吸收": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级火属性吸收")) {
                fight_unit["火吸"] = 2;
                fight_unit["已加技能"].add("高级火属性吸收");
            }
        }
    },
    "超级火属性吸收": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["火吸"] = 3;
            fight_unit["超火吸"] = true
            fight_unit["已加技能"].add("超级火属性吸收");
        }
    },
    "土属性吸收": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级土属性吸收") && !fight_unit["已加技能"].has("超级土属性吸收")) {
                fight_unit["土吸"] = 1;
            }
        }
    },
    "高级土属性吸收": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级土属性吸收")) {
                fight_unit["土吸"] = 2;
                fight_unit["已加技能"].add("高级土属性吸收");
            }
        }
    },
    "超级土属性吸收": {
        "技能属性": function (fight_data, fight_unit) {
            fight_unit["土吸"] = 3;
            fight_unit["超土吸"] = true
            fight_unit["已加技能"].add("超级土属性吸收");
        }
    },
    "合纵": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("高级合纵") && !fight_unit["已加技能"].has("超级合纵")) {
                let model_count = G.FightUtils.get_friend_team_pet_model_count(fight_data, fight_unit);
                fight_unit["合纵"] = Math.floor(Math.min(model_count, 4) * fight_unit["等级"] / 5.5);
            }
        }
    },
    "高级合纵": {
        "技能属性": function (fight_data, fight_unit) {
            if (!fight_unit["已加技能"].has("超级合纵")) {
                let model_count = G.FightUtils.get_friend_team_pet_model_count(fight_data, fight_unit);
                fight_unit["合纵"] = Math.floor(Math.min(model_count, 4) * fight_unit["等级"] / 4);
                fight_unit["已加技能"].add("高级合纵");
            }
        }
    },
    "超级合纵": {
        "技能属性": function (fight_data, fight_unit) {
            let model_count = G.FightUtils.get_friend_team_pet_model_count(fight_data, fight_unit);
            fight_unit["合纵"] = Math.floor(Math.min(model_count, 4) * fight_unit["等级"] / 3);
            fight_unit["已加技能"].add("超级合纵");
        }
    },
    // --------------------------------召唤兽技能结束------------------------------------------------


    // --------------------------------法宝技能配置------------------------------------------------
    "七杀": {
        "类型": "法宝",
        "技能类型": "减益",
        "状态算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index, custom_data) {
            target_unit["法术状态"]["七杀"] = {};
            target_unit["法术状态"]["七杀"]["回合"] = 3;
            target_unit["法术状态"]["七杀"]["境界"] = src_unit["七杀"];
            target_unit["法术状态"]["七杀"]["防御"] = target_unit["防御"] * src_unit["七杀"];
        }
    },
    "惊魂铃": {
        "类型": "法宝",
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index, custom_data) {
            target_unit["法术状态"]["惊魂铃"] = {};
            target_unit["法术状态"]["惊魂铃"]["回合"] = 1;
            target_unit["法术状态"]["惊魂铃"]["境界"] = src_unit["惊魂铃"];
        }
    },
    "清心咒": {
        "类型": "法宝",
        "技能类型": "恢复",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (G.RandomUtils.chance(70)) {
                G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.fb_feng_yin_status_ap, "清心咒");
            }
        }
    },
    "缚妖索": {
        "类型": "法宝",
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["缚妖索"] = {};
            target_unit["法术状态"]["缚妖索"]["回合"] = 3;
            target_unit["法术状态"]["缚妖索"]["几率"] = src_unit["缚妖索"];
        }
    },
    "分水": {
        "类型": "法宝",
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["分水"] = {};
            target_unit["法术状态"]["分水"]["回合"] = 3;
        }
    },
    "赤焰": {
        "类型": "法宝",
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["赤焰"] = {};
            target_unit["法术状态"]["赤焰"]["回合"] = 3;
            target_unit["法术状态"]["赤焰"]["恢复魔法"] = src_unit["赤焰"];
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "魔王寨", "赤暖")) {
                target_unit["法术状态"]["赤焰"]["恢复魔法"] = src_unit["赤焰"] * 10;
            }
        },
        "行动前触发": function (fight_data, fight_unit) {
            // 行动前赤焰回蓝
            G.FightUnitUtils.add_unit_mp(fight_unit, Math.floor(fight_unit["法术状态"]["赤焰"]["恢复魔法"]));
        }
    },
    "铸兵锤": {
        "类型": "法宝",
        "技能类型": "增益",
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "怒哮", skill_level);
            return false;
        }
    },
    "五彩娃娃": {
        "类型": "法宝",
        // 战斗中会替主人承受一定的伤害。
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["五彩娃娃"] = {};
            target_unit["法术状态"]["五彩娃娃"]["回合"] = 3;
            target_unit["法术状态"]["五彩娃娃"]["境界"] = src_unit["五彩娃娃"];
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * (1 - target_unit["法术状态"]["五彩娃娃"]["境界"] * 0.02);
        }
    },
    "天煞": {
        "类型": "法宝",
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["天煞"] = {};
            target_unit["法术状态"]["天煞"]["回合"] = 3;
            target_unit["法术状态"]["五彩娃娃"]["境界"] = src_unit["天煞"];
        },
        "行动前触发": function (fight_data, fight_unit) {
            // 行动前天煞回蓝
            G.FightUnitUtils.add_unit_mp(fight_unit, Math.floor(fight_unit["法术状态"]["天煞"]["境界"] * 4 + 7));
            // 行动前天煞添加战意
            if (fight_unit["法术状态"]["天煞"]["境界"] === 12 && fight_unit["法术状态"]["回合"] === 1) {
                G.FightUnitUtils.add_zhan_yi(fight_unit, 1);
            }
        }
    },
    "捆仙绳": {
        "类型": "法宝",
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["捆仙绳"] = {};
            target_unit["法术状态"]["捆仙绳"]["回合"] = 3;
            target_unit["法术状态"]["捆仙绳"]["境界"] = src_unit["捆仙绳"];
            target_unit["法术状态"]["捆仙绳"]["几率"] = src_unit["捆仙绳"] * 2 + 8;
        }
    },
    "神木宝鼎": {
        "类型": "法宝",
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["神木宝鼎"] = {};
            target_unit["法术状态"]["神木宝鼎"]["回合"] = 3;
            target_unit["法术状态"]["神木宝鼎"]["境界"] = src_unit["神木宝鼎"];
            target_unit["法术状态"]["神木宝鼎"]["法伤"] = Math.floor(target_unit["法伤"] * (src_unit["神木宝鼎"] * 0.01));
        }
    },
    "罗汉珠": {
        "类型": "法宝",
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["罗汉珠"] = {};
            target_unit["法术状态"]["罗汉珠"]["回合"] = 3;
            target_unit["法术状态"]["罗汉珠"]["境界"] = src_unit["罗汉珠"];
        }
    },
    "断线木偶": {
        "类型": "法宝",
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["断线木偶"] = {};
            target_unit["法术状态"]["断线木偶"]["回合"] = 1;
            target_unit["法术状态"]["断线木偶"]["境界"] = src_unit["断线木偶"];
        },
        "行动前触发": function (fight_data, fight_unit) {
            if (G.RandomUtils.chance(40)) {
                let target_number = fight_unit["法术状态"]["断线木偶"]["攻击编号"];
                let target = G.FightUtils.get_fight_unit_by_number(fight_data, target_number);
                if (G.FightUnitUtils.get_target_unit_status(fight_unit, target, 2)) {
                    fight_unit["指令"]["类型"] = "攻击";
                    fight_unit["指令"]["目标"] = target_number;
                    fight_unit["断线木偶"] = 1;
                }
            }
        }
    },
    "发瘟匣": {
        "类型": "法宝",
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (G.RandomUtils.chance(6 + src_unit["发瘟匣"] * 2)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "发瘟匣", src_unit["等级"]);
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["发瘟匣"] = {};
            target_unit["法术状态"]["发瘟匣"]["回合"] = 1;
            target_unit["法术状态"]["发瘟匣"]["境界"] = src_unit["发瘟匣"];
        },
        "行动前触发": function (fight_data, fight_unit) {
            fight_unit["指令"]["类型"] = "攻击";
            let target = G.FightUtils.get_enemy_team_single_survive_unit(fight_data, fight_unit);
            fight_unit["指令"]["目标"] = target !== undefined ? target["编号"] : undefined;
        }
    },
    "摄魂": {
        "类型": "法宝",
        "技能类型": "减益",
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["摄魂"] = {};
            target_unit["法术状态"]["摄魂"]["回合"] = 3;
            target_unit["法术状态"]["摄魂"]["值"] = src_unit["摄魂"]["境界"];
        },
        "回合影响": function (fight_data, src_unit, fb) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "拘魄")) {
                fb["回合"] = 10;
            }
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let gl = src_unit["摄魂"]["境界"];
            if (src_unit["类型"] === "怪物") {
                gl = 12;
            }
            if (G.RandomUtils.custom_chance(50, 3 + gl * 2)) {
                let num = src_unit["摄魂"]["境界"] * 0.0125;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "聚魂")) {
                    num = num * 1.045;
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "拘魄")) {
                    num = num * 1.06;
                }
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "阴曹地府", "狱火")) {
                    target_unit["法术状态"]["摄魂"]["狱火"] = 1;
                }
                src_unit["摄魂"]["值"] = num;
            }
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "摄魂", skill_level);
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * (1 + target_unit["法术状态"]["摄魂"]["值"]);
        },
        "攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            if (!target_unit["法术状态"]["摄魂"]) {
                damage = damage * (1 - target_unit["法术状态"]["摄魂"]["值"]);
            }
        }
    },
    "现形符": {
        "类型": "法宝",
        "技能类型": "减益",
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (G.RandomUtils.chance(5 + src_unit["现形符"] * 4)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "番天印", src_unit["等级"]);
                if (target_unit["类型"] === "角色" && target_unit["变身数据"] && G.ItemUtils.bs_data[target_unit["变身数据"]]) {
                    if (G.RandomUtils.chance(src_unit["现形符"] * 2 + 3)) {
                        G.FightBuffSkillUtils.destory_bianshen(fight_data, src_unit, target_unit);
                    }
                }
            }
        }
    },
    "番天印": {
        "类型": "法宝",
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (G.RandomUtils.chance(5 + src_unit["番天印"] * 4)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "番天印", src_unit["等级"]);
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["番天印"] = {};
            target_unit["法术状态"]["番天印"]["回合"] = 4;
            target_unit["法术状态"]["番天印"]["境界"] = src_unit["番天印"];
        }
    },
    "金蟾": {
        "类型": "法宝",
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["编号"] === target_unit["编号"]) {
                let close_hp = Math.floor(src_unit["气血"] * 0.5);
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾死亡"] = G.FightComputingUtils.computing_remove_hp(fight_data, src_unit, src_unit, close_hp, "金蟾");
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["结尾气血"] = close_hp;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "无底洞", "风墙")) {
                    let friend = G.FightUtils.get_friend_team_single_survive_unit(fight_data, src_unit);
                    target_list = G.FightUtils.get_friend_team_group_survive_unit(fight_data, friend, 15, "金蟾");
                }
            } else {
                //其他玩家不需要添加状态特效
                fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["特效"] = ["无需特效"];
                let close_hp = Math.floor(src_unit["气血"] * 0.5 * ((src_unit["金蝉"] * 4 + 1) * 0.01));

                if (close_hp > src_unit["等级"] * 16) {
                    close_hp = Math.floor(src_unit["等级"] * 16);
                }
                G.FightUnitUtils.add_hu_dun_for_lt_hp(fight_data, target_unit, close_hp);
                return false;
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["金蟾"] = {};
            target_unit["法术状态"]["金蟾"]["回合"] = 4;
            target_unit["法术状态"]["金蟾"]["境界"] = src_unit["金蝉"];
        }
    },
    "无字经": {
        "类型": "法宝",
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (G.RandomUtils.chance(5 + src_unit["无字经"] * 4)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "无字经", src_unit["等级"]);
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["无字经"] = {};
            target_unit["法术状态"]["无字经"]["回合"] = 4;
            target_unit["法术状态"]["无字经"]["境界"] = src_unit["无字经"];
        }
    },
    "混元伞": {
        "类型": "法宝",
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 4;
            if (target_unit["奇经八脉"]["坚壁"] && target_unit["坚壁"] === null) {
                hh = 5;
                target_unit["坚壁"] = 1;
            }
            return { "回合": hh, "境界": fight_unit["无字经"] };
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            let ft_damage = Math.floor(damage * (target_unit["法术状态"]["混元伞"]["境界"] * 0.01 + 0.03));
            if (ft_damage < 1) {
                ft_damage = 1;
            }
            damage -= ft_damage;
            let tmp_target = G.FightUtils.get_enemy_team_single_survive_unit(fight_data, target_unit);
            if (tmp_target) {
                G.FightComputingUtils.remove_hp_js_and_play(fight_data, target_unit, tmp_target, ft_damage);
            }
        }
    },
    "缚龙索": {
        "类型": "法宝",
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "缚龙索", skill_level)
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["缚龙索"] = {};
            target_unit["法术状态"]["缚龙索"]["回合"] = 3;
            target_unit["法术状态"]["缚龙索"]["境界"] = src_unit["缚龙索"];
            target_unit["法术状态"]["缚龙索"]["几率"] = src_unit["缚龙索"] * 2 + 8;
        }
    },
    "落宝金钱": {
        "类型": "法宝",
        "技能类型": "减益",
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (G.RandomUtils.chance(src_unit["落宝金钱"] * 4 + 5)) {
                G.FightStatusUtils.relieve_status(fight_data, target_unit, G.Skill.fb_gain_status_ap, 1);
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["落宝金钱"] = {};
            target_unit["法术状态"]["落宝金钱"]["回合"] = 1;
            target_unit["法术状态"]["落宝金钱"]["境界"] = src_unit["落宝金钱"];
        }
    },
    "鬼泣": {
        "类型": "法宝",
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (src_unit["队伍"] === 0) {
                if (target_unit["类型"] === "bb") { //捣蛋鬼
                    G.FightComputingUtils.computing_run_away(fight_data, target_unit, 100);
                }
                else if (G.RandomUtils.chance(src_unit["鬼泣"] * 1.4)) { //21
                    G.FightComputingUtils.computing_run_away(fight_data, target_unit, 20);
                }
            }
        }
    },
    "无魂傀儡": {
        "类型": "法宝",
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (G.RandomUtils.chance(10 * src_unit["无魂傀儡"] * 2)) {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "无魂傀儡", src_unit["等级"]);
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["无魂傀儡"] = {};
            target_unit["法术状态"]["无魂傀儡"]["回合"] = 3;
            target_unit["法术状态"]["无魂傀儡"]["境界"] = src_unit["无魂傀儡"];
        },
        "行动前触发": function (fight_data, fight_unit) {
            fight_unit["指令"]["类型"] = "攻击";
            let target = G.FightUtils.get_enemy_team_single_survive_unit(fight_data, fight_unit);
            fight_unit["指令"]["目标"] = target !== undefined ? target["编号"] : undefined;
        }
    },
    "苍白纸人": {
        "类型": "法宝",
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态属性": function (fight_unit, target_unit, skill_level, custom_data) {
            let hh = 4;
            if (target_unit["奇经八脉"]["坚壁"] && target_unit["坚壁"] === null) {
                hh = 5;
                target_unit["坚壁"] = 1
            }
            return { "回合": hh, "境界": fight_unit["苍白纸人"] };
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * (1 - target_unit["法术状态"]["苍白纸人"]["境界"] * 0.02);
        }
    },
    "干将莫邪": {
        "类型": "法宝",
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["干将莫邪"] = {};
            let hh = 4;
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "奋战")) {
                target_unit["法术状态"]["干将莫邪"]["物连几率"] = 40;
                hh = 6;
            } else {
                target_unit["法术状态"]["干将莫邪"]["加伤害"] = 1.05 + 0.03;
                target_unit["法术状态"]["干将莫邪"]["递减名称"] = "加伤害";
                target_unit["法术状态"]["干将莫邪"]["回合递减"] = 0.1;
                if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "干将")) {
                    target_unit["法术状态"]["干将莫邪"]["加伤害"] += 0.3;
                }
            }
            target_unit["法术状态"]["干将莫邪"]["回合"] = hh;
            target_unit["法术状态"]["干将莫邪"]["境界"] = src_unit["干将莫邪"];
        },
        "回合影响": function (fight_data, src_unit, fb) {
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "干将")) {
                fb["回合"] -= 2;
            }
            if (G.FightUnitUtils.check_fight_unit_jingmai(src_unit, "大唐官府", "神凝")) {
                fb["回合"] += 2;
            }
        }
    },
    "照妖镜": {
        "类型": "法宝",
        "技能类型": "减益",
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (G.RandomUtils.chance(src_unit["照妖镜"] * 2 + 3)) {
                G.FightBuffSkillUtils.destory_bianshen(fight_data, src_unit, target_unit);
            }
        }
    },
    "乾坤玄火塔": {
        "类型": "法宝",
        "技能类型": "增益",
        "指定对象": "自己",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let fn = 150 * 0.02 + src_unit["乾坤玄火塔"] * 1.2 + 1;
            if (G.FightUnitUtils.get_unit_fabao_wx(src_unit) === "火") {
                fn = fn + 2;
            } else if (G.FightUnitUtils.get_unit_fabao_wx(src_unit) === "水") {
                fn = fn - 2;
            }
            G.FightUnitUtils.add_fen_nu(src_unit, fn);
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["乾坤玄火塔"] = {};
            target_unit["法术状态"]["乾坤玄火塔"]["回合"] = 5;
            target_unit["法术状态"]["乾坤玄火塔"]["境界"] = src_unit["乾坤玄火塔"];
        }
    },
    "无尘扇": {
        "类型": "法宝",
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            target_unit["法术状态"]["无尘扇"]["减愤怒"] = src_unit["无尘扇"] + 1;
            if (target_unit["法术状态"]["无尘扇"]) {
                G.FightUnitUtils.consummer_unit_fen_nu(target_unit, src_unit["无尘扇"]);
            }
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "无尘扇", src_unit["等级"]);
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["无尘扇"] = {};
            target_unit["法术状态"]["无尘扇"]["回合"] = 3;
            target_unit["法术状态"]["无尘扇"]["减愤怒"] = 0;
        }
    },
    "九梵清莲": {
        "类型": "法宝",
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 1;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["九梵清莲"] = {};
            target_unit["法术状态"]["九梵清莲"]["回合"] = 1;
            target_unit["法术状态"]["九梵清莲"]["境界"] = src_unit["九梵清莲"];
        }
    },
    "璞玉灵钵": {
        "类型": "法宝",
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["璞玉灵钵"] = {};
            target_unit["法术状态"]["璞玉灵钵"]["回合"] = 1;
            target_unit["法术状态"]["璞玉灵钵"]["境界"] = src_unit["璞玉灵钵"];
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = Math.floor(damage * (1 - target_unit["法术状态"]["璞玉灵钵"]["境界"] * 0.01 + 0.02));
        },
        "攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            if (!target_unit["法术状态"]["璞玉灵钵"]) {
                damage = Math.floor(damage * (1 - target_unit["法术状态"]["璞玉灵钵"]["境界"] * 0.01 + 0.02));
            }
        }
    },
    "烽火狼烟": {
        "类型": "法宝",
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["烽火狼烟"] = {};
            target_unit["法术状态"]["烽火狼烟"]["回合"] = 1;
            target_unit["法术状态"]["烽火狼烟"]["境界"] = src_unit["烽火狼烟"];
            target_unit["法术状态"]["烽火狼烟"]["加伤"] = Math.floor(src_unit["烽火狼烟"] * 0.004 + 0.01);
            target_unit["法术状态"]["烽火狼烟"]["防御"] = Math.floor(target_unit["防御"] * 0.06);
        }
    },
    "紫火如意": {
        "类型": "法宝",
        "技能类型": "法术",
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            return [Math.floor(src_unit["等级"] * G.RandomUtils.generate_random(40, 88) + 40)];
        }
    },
    "苍灵雪羽": {
        "类型": "法宝",
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["苍灵雪羽"] = {};
            target_unit["法术状态"]["苍灵雪羽"]["回合"] = 1;
            target_unit["法术状态"]["苍灵雪羽"]["境界"] = src_unit["苍灵雪羽"];
            target_unit["法术状态"]["苍灵雪羽"]["法防"] = Math.floor(target_unit["法防"] * 0.06);
            target_unit["法术状态"]["苍灵雪羽"]["加伤"] = Math.floor(src_unit["苍灵雪羽"] * 0.004 + 0.01);
        }
    },
    "舞雪冰蝶": {
        "类型": "法宝",
        "技能类型": "减益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return 15;
        },
        "消耗": function (fight_data, fight_unit, attack_number) {
            return [0, "无"];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["舞雪冰蝶"] = {};
            target_unit["法术状态"]["舞雪冰蝶"]["回合"] = 3;
            target_unit["法术状态"]["舞雪冰蝶"]["境界"] = src_unit["苍灵雪羽"];
        }
    },
    // --------------------------------法宝技能配置结束------------------------------------------------


    // --------------------------------灵宝技能配置------------------------------------------------
    "九霄龙锥": {
        "类型": "灵宝",
        "技能类型": "增益",
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["九霄龙锥"] = {};
            target_unit["法术状态"]["九霄龙锥"]["回合"] = 999;
            target_unit["法术状态"]["九霄龙锥"]["加伤"] = src_unit["九霄龙锥"];
        }
    },
    "冥火炼炉": {
        "类型": "灵宝",
        // TODO 令目标每回合开始时受到（施法者等级*2/5/10）点气血流失，持续到战斗结束。
        "技能类型": "减益",
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["冥火炼炉"] = {};
            target_unit["法术状态"]["冥火炼炉"]["回合"] = 999;
            target_unit["法术状态"]["冥火炼炉"]["境界"] = src_unit["冥火炼炉"];
        }
    },
    "化怨清莲": {
        "类型": "灵宝",
        "技能类型": "增益",
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["化怨清莲"] = {};
            target_unit["法术状态"]["化怨清莲"]["回合"] = 2;
            target_unit["法术状态"]["化怨清莲"]["减伤"] = src_unit["化怨清莲"]["减伤"];
            target_unit["法术状态"]["化怨清莲"]["加伤"] = src_unit["化怨清莲"]["加伤"];
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * src_unit["法术状态"]["减伤"];
        },
        "攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * src_unit["法术状态"]["加伤"];
        }
    },
    "天雷音鼓": {
        "类型": "灵宝",
        "备注": "召唤7/13/40道闪电劈向敌方随机单位，每道闪电造成（施法者等级*4）点气血流失并使目标受到的法术伤害增加1%，持续到战斗结束",
        "技能类型": "法术",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return src_unit["天雷音鼓"];
        },
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            return [Math.floor(src_unit["等级"] * 4)];
        },
        "扣血触发": function (fight_data, src_unit, target_unit, remove_hp) {
            G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "天雷音鼓", src_unit["等级"]);
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["天雷音鼓"] = {};
            target_unit["法术状态"]["天雷音鼓"]["回合"] = 999;
        },
        "被攻击伤害结果": function (fight_data, src_unit, target_unit, damage) {
            damage = damage * 1.1;
        }
    },
    "宁心道符": {
        "类型": "灵宝",
        "备注": "令目标提升18%/30%/54%抵抗封印能力，持续12回合",
        "技能类型": "增益",
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["宁心道符"] = {};
            target_unit["法术状态"]["宁心道符"]["回合"] = 12;
            target_unit["法术状态"]["宁心道符"]["抵抗封印等级"] = src_unit["宁心道符"];
        }
    },
    "寒霜盾戟": {
        "类型": "灵宝",
        "备注": "令自己受到伤害降低2.5%/7.5%/25%、造成伤害提升2.5%/7.5%/25%，持续到战斗结束。(可叠加)",
        "技能类型": "增益",
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            if (target_unit["法术状态"]["寒霜盾戟"] === undefined) {
                target_unit["法术状态"]["寒霜盾戟"] = {};
                target_unit["法术状态"]["寒霜盾戟"]["回合"] = 999;
                target_unit["法术状态"]["寒霜盾戟"]["层数"] = 1;
                target_unit["法术状态"]["寒霜盾戟"]["伤害"] = src_unit["寒霜盾戟"]["伤害"];
                target_unit["法术状态"]["寒霜盾戟"]["防御"] = src_unit["寒霜盾戟"]["防御"];
            } else {
                // TODO 叠加层数时重新计算伤害加成
                target_unit["法术状态"]["寒霜盾戟"]["伤害"] = src_unit["寒霜盾戟"]["伤害"] * (target_unit["法术状态"]["寒霜盾戟"]["层数"] + 1);
            }
        }
    },
    "断穹巨剑": {
        "类型": "灵宝",
        "备注": "对目标造成（伤害力*1.5/2.5/4.5）点气血流失，并对额外3个单位造成25%溅射伤害，伤害结果会有10%上下浮动。",
        "技能类型": "法术",
        "法术伤害": function (fight_data, src_unit, target_unit, target_list, target_index, skill_level) {
            let damage = src_unit["等级"] * G.FightSkillUtils.get_ll_damage(fight_data, src_unit, target_unit);
            return [Math.floor(damage * src_unit["断穹巨剑"])];
        },
        "溅射计算": function (fight_data, src_unit, target_unit, damage) {
            //溅射目标
            let js_list = G.FightUtils.get_jian_she_group(fight_data, src_unit, target_unit, 3);
            for (let index = 0; index < js_list.length; index++) {
                if (js_list[index]["编号"] !== target_unit["编号"]) {
                    G.FightComputingUtils.remove_hp_js_and_play(fight_data, src_unit, js_list[index], damage * 0.25);
                }
            }
        }
    },
    "煞魂冥灯": {
        "类型": "灵宝",
        "备注": "令目标最大气血降低9%/20%/50%，持续到战斗结束。",
        "技能类型": "减益",
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["煞魂冥灯"] = {};
            target_unit["法术状态"]["煞魂冥灯"]["回合"] = 999;
            target_unit["法术状态"]["煞魂冥灯"]["最大气血"] = target_unit["最大气血"] * src_unit["煞魂冥灯"];
        }
    },
    "相思寒针": {
        "类型": "灵宝",
        "备注": "令目标无法使用灵宝，并且封印命中率降低50%，持续2/4/8回合。",
        "技能类型": "减益",
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["相思寒针"] = {};
            target_unit["法术状态"]["相思寒针"]["回合"] = src_unit["相思寒针"]["回合"];
            target_unit["法术状态"]["相思寒针"]["封印命中等级"] = target_unit["封印命中等级"] * src_unit["相思寒针"]["封印命中等级"];
        }
    },
    "真阳令旗": {
        "类型": "灵宝",
        "备注": "令己方1/3/10个单位造成的伤害提高4%（80%），持续到战斗结束。（括号中为目标为召唤兽和孩子的效果）",
        "技能类型": "增益",
        "目标": function (fight_data, src_unit, target_unit, skill_level) {
            return src_unit["真阳令旗"];
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["类型"] === "bb") {
                target_unit["伤害"] = target_unit["伤害"] * 1.8;
            } else {
                target_unit["伤害"] = target_unit["伤害"] * 1.04;
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["真阳令旗"] = {};
            target_unit["法术状态"]["真阳令旗"]["回合"] = 999;
        }
    },
    "缚仙蛛丝": {
        "类型": "灵宝",
        "备注": "禁用目标道具栏中随机3/5/20格物品，持续到战斗结束。",
        "技能类型": "减益",
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["缚仙蛛丝"] = {};
            target_unit["法术状态"]["缚仙蛛丝"]["回合"] = 999;
            target_unit["法术状态"]["缚仙蛛丝"]["境界"] = src_unit["缚仙蛛丝"];
        }
    },
    "锢魂命谱": {
        "类型": "灵宝",
        "备注": "令敌方所有单位身上存在的锢魂术状态延长2/4/8回合。（包括死亡单位）",
        "技能类型": "减益",
        "指定目标": function (fight_data, src_unit, target_unit, skill_level) {
            return G.FightUtils.get_enemy_team_group_all_unit(fight_data, src_unit);
        },
        "减益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["锢魂术"]) {
                target_unit["法术状态"]["锢魂术"]["回合"] += src_unit["锢魂命谱"];
            }
        }
    },
    "青狮獠牙": {
        "类型": "灵宝",
        "备注": "令目标所有召唤兽和孩子（包括未出战）的最大气血降低10%/20%/50%。",
        "技能类型": "减益",
        "指定目标": function (fight_data, src_unit, target_unit, skill_level) {
            return G.FightUtils.get_enemy_team_group_all_pet_unit(fight_data, src_unit);
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["青狮獠牙"] = {};
            target_unit["法术状态"]["青狮獠牙"]["回合"] = 999;
            target_unit["法术状态"]["缚仙蛛丝"]["最大气血"] = target_unit["最大气血"] * src_unit["青狮獠牙"];
        }
    },
    "静心禅珠": {
        "类型": "灵宝",
        "备注": "为己方全部单位恢复（施法者等级*6/10/20）点气血，同时消耗道具栏中最多两个百炼金乌丸，每个百炼金乌丸增加（品质*0.4）%治疗结果。",
        "技能类型": "恢复",
        "指定目标": function (fight_data, src_unit, target_unit, skill_level) {
            return G.FightUtils.get_friend_team_group_survive_unit(fight_data, src_unit, 10);
        },
        "恢复算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            let hp = G.FightComputingUtils.computing_heals(fight_data, src_unit, target_unit, "静心禅珠", src_unit["静心禅珠"]);
            G.FightUnitUtils.add_unit_hp(target_unit, hp);
            fight_data["战斗流程"][fight_data["战斗流程"].length - 1]["被攻击"][index]["恢复气血"] = hp;
        }
    },
    "风舞心经": {
        "类型": "灵宝",
        "备注": "将自己当前风灵层数变为4/8/15（可临时突破上限）。",
        "技能类型": "增益",
        "指定对象": "自己",
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["风灵"]) {
                target_unit["法术状态"]["风灵"]["层数"] = src_unit["风舞心经"];
            }
            return false;
        }
    },
    "战神宝典": {
        "类型": "灵宝",
        "备注": "消耗全部灵元，每回合令自己造成的物理和法术伤害提升一定比例，持续到战斗结束。（效果与消耗灵元数量有关）",
        "技能类型": "增益",
        "指定对象": "自己",
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["战神宝典"] = {};
            target_unit["法术状态"]["战神宝典"]["回合"] = 999;
            target_unit["法术状态"]["伤害"] = target_unit["伤害"] * src_unit["战神宝典"];
        }
    },
    "乾坤金卷": {
        "类型": "灵宝",
        "技能类型": "增益",
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["乾坤金卷"] = {};
            target_unit["法术状态"]["乾坤金卷"]["回合"] = 999;
            target_unit["法术状态"]["乾坤金卷"]["攻击五行"] = "金";
            target_unit["法术状态"]["乾坤金卷"]["防御五行"] = "金";
        }
    },
    "乾坤水卷": {
        "类型": "灵宝",
        "技能类型": "增益",
        "状态算法": function (fight_data, src_unit, target_unit, consummer, jj) {
            target_unit["法术状态"]["乾坤水卷"] = {};
            target_unit["法术状态"]["乾坤水卷"]["回合"] = 999;
            target_unit["法术状态"]["乾坤水卷"]["攻击五行"] = "水";
            target_unit["法术状态"]["乾坤水卷"]["防御五行"] = "水";
        }
    },
    "乾坤火卷": {
        "类型": "灵宝",
        "技能类型": "减益",
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["乾坤火卷"] = {};
            target_unit["法术状态"]["乾坤火卷"]["回合"] = 999;
            target_unit["法术状态"]["乾坤火卷"]["攻击五行"] = "火";
            target_unit["法术状态"]["乾坤火卷"]["防御五行"] = "火";
        }
    },
    "乾坤土卷": {
        "类型": "灵宝",
        "技能类型": "减益",
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["乾坤土卷"] = {};
            target_unit["法术状态"]["乾坤土卷"]["回合"] = 999;
            target_unit["法术状态"]["乾坤土卷"]["攻击五行"] = "土";
            target_unit["法术状态"]["乾坤土卷"]["防御五行"] = "土";
        }
    },
    "定神仙琴": {
        "类型": "灵宝",
        //解除自己的异常状态，提升50%抵抗封印能力，持续3回合
        "技能类型": "增益",
        "指定对象": "自己",
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            G.FightStatusUtils.relieve_status(fight_data, target_unit, G.FightUnitUtils.get_error_ap_status(target_unit))
            target_unit["法术状态"]["定神仙琴"] = {};
            target_unit["法术状态"]["定神仙琴"]["回合"] = 3;
            target_unit["法术状态"]["定神仙琴"]["抵抗封印等级"] = target_unit["抵抗封印等级"] * 0.5;
        }
    },
    "赤炎战笛": {
        "类型": "灵宝",
        //TODO 令指定召唤兽或孩子单位本回合造成的所有伤害提升150%。(可叠加)
        "技能类型": "增益",
        "消耗": function (fight_data, src_unit) {
            return 1;
        },
        "增益算法": function (fight_data, src_unit, target_unit, skill_level, target_list, index) {
            if (target_unit["法术状态"]["赤炎战笛"]) {
                target_unit["法术状态"]["赤炎战笛"]["层数"] += 1;
                target_unit["法术状态"]["赤炎战笛"]["伤害"] = target_unit["伤害"] * (src_unit["赤炎战笛"] + target_unit["法术状态"]["赤炎战笛"]["层数"]);
            } else {
                G.FightStatusUtils.add_unit_status(fight_data, src_unit, target_unit, "赤炎战笛", skill_level);
            }
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["赤炎战笛"] = {};
            target_unit["法术状态"]["赤炎战笛"]["伤害"] = target_unit["伤害"] * (src_unit["赤炎战笛"]);
            target_unit["法术状态"]["赤炎战笛"]["回合"] = 1;
        }
    },
    "惊兽云尺": {
        "类型": "灵宝",
        //TODO 令目标召唤兽和孩子受到所有伤害提升50%，持续到战斗结束。(可叠加)
        "技能类型": "增益",
        "指定目标": function (fight_data, src_unit, target_unit, skill_level) {
            return [G.FightUnitUtils.get_fight_unit_pet(fight_data, target_unit)];
        },
        "状态算法": function (fight_data, src_unit, target_unit, status_level, custom_data) {
            target_unit["法术状态"]["赤炎战笛"] = {};
            target_unit["法术状态"]["赤炎战笛"]["回合"] = 999;
        }
    },
    // --------------------------------灵宝技能配置结束------------------------------------------------
    // --------------------------------道具附加技能------------------------------------------------
    "倍愈": {
        "技能类型": "道具",
        "附加技能算法": function (fight_data, src_unit, target_unit, item_data, heals) {
            if (G.RandomUtils.chance(40)) {
                heals = heals * 2;
            }
        }
    },
    "藏神": {
        "技能类型": "道具",
        "附加技能算法": function (fight_data, src_unit, target_unit, item_data, heals) {
            if (G.RandomUtils.chance(95)) {
                let level = item_data["品质"] || 1;
                G.FightUnitUtils.add_hu_dun_for_lt_hp(fight_data, target_unit, level * 16 + 300);
            }
        }
    },
    // --------------------------------神器------------------------------------------------
    "星斗盘": {
        "技能类型": "神器",
        "死亡触发": function (fight_data, src_unit, target_unit) {
            // 1 "每次击杀敌方单位，增加60点伤害。" 2 "每次击杀敌方单位，增加120点伤害。"
            if (G.FightUnitUtils.check_unit_shen_qi_skill(src_unit, "静笃")) {
                src_unit["伤害"] += 60 * src_unit["神器"]["等级"];
            }
        }
    }
}

